diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-03-12 23:53:39 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-03-12 23:53:39 +0000 |
| commit | 24969cd0efa675d399b4a5b97077b7c8d06b5fec (patch) | |
| tree | 9ab9f3b69646fbb11a852710fcae7a57b2e45dda /src/game/client/gc_render.cpp | |
| parent | 0883fc3dfd51d8dda9a9dc055400871057cfe3a2 (diff) | |
| download | zcatch-24969cd0efa675d399b4a5b97077b7c8d06b5fec.tar.gz zcatch-24969cd0efa675d399b4a5b97077b7c8d06b5fec.zip | |
tilemap skip optimizating
Diffstat (limited to 'src/game/client/gc_render.cpp')
| -rw-r--r-- | src/game/client/gc_render.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/game/client/gc_render.cpp b/src/game/client/gc_render.cpp index 45503c8c..93aa483d 100644 --- a/src/game/client/gc_render.cpp +++ b/src/game/client/gc_render.cpp @@ -343,6 +343,39 @@ void render_layers(float center_x, float center_y, int pass) } } +void render_tilemap_generate_skip() +{ + for(int g = 0; g < layers_num_groups(); g++) + { + MAPITEM_GROUP *group = layers_get_group(g); + + for(int l = 0; l < group->num_layers; l++) + { + MAPITEM_LAYER *layer = layers_get_layer(group->start_layer+l); + + if(layer->type == LAYERTYPE_TILES) + { + MAPITEM_LAYER_TILEMAP *tmap = (MAPITEM_LAYER_TILEMAP *)layer; + TILE *tiles = (TILE *)map_get_data(tmap->data); + for(int y = 0; y < tmap->height; y++) + { + for(int x = 0; x < tmap->width; x++) + { + int sx; + for(sx = 1; x+sx < tmap->width && sx < 255; sx++) + { + if(tiles[y*tmap->width+x+sx].index) + break; + } + + tiles[y*tmap->width+x].skip = sx-1; + } + } + } + } + } +} + static void render_items() { int num = snap_num_items(SNAP_CURRENT); |