dungeon_crawler

view prototype/src/tile.h @ 46:f3030df27110

debugging the particles
author John Tsiombikas <nuclear@mutantstargoat.com>
date Thu, 13 Sep 2012 06:33:51 +0300
parents dfd3a413ef9e
children aa9e28670ae2
line source
1 #ifndef TILE_H_
2 #define TILE_H_
4 #include <vector>
5 #include <map>
6 #include <assimp/scene.h>
7 #include <psys/psys.h>
8 #include "mesh.h"
9 #include "light.h"
11 enum {
12 TILE_NORTH = 1,
13 TILE_SOUTH = 2,
14 TILE_EAST = 4,
15 TILE_WEST = 8,
16 TILE_ALL = 0xffff
17 };
19 class TileSet;
21 class Tile {
22 private:
23 TileSet *tset;
25 std::vector<Mesh*> meshes;
26 std::vector<unsigned int> mesh_side, light_side, psys_side;
27 std::vector<Light*> lights;
28 // attributes for gridcell-unique particle systems
29 std::vector<struct psys_attributes*> psattr;
30 // global particle systems (simulated once, drawn for each tile instance).
31 std::vector<struct psys_emitter*> psys_global;
32 long last_upd;
34 int load_lights(const aiScene *scn);
35 int load_meshes(const aiScene *scn, const std::map<aiMesh*, aiNode*> &nmap);
37 public:
38 Tile(TileSet *tileset = 0);
39 ~Tile();
41 const struct psys_attributes * const *get_unique_psys() const;
42 int get_unique_psys_count() const;
44 bool load(const char *fname);
46 void update(unsigned long msec, float dt);
48 void draw(unsigned int drawmask) const;
49 void draw_lights(unsigned int drawmask) const;
50 void draw_post(unsigned int drawmask) const;
51 };
54 #endif // TILE_H_