dungeon_crawler

annotate prototype/src/tile.h @ 48:aa9e28670ae2

added sound playback, more to do
author John Tsiombikas <nuclear@member.fsf.org>
date Mon, 17 Sep 2012 08:40:59 +0300
parents f3030df27110
children 303743485aba
rev   line source
nuclear@1 1 #ifndef TILE_H_
nuclear@1 2 #define TILE_H_
nuclear@1 3
nuclear@2 4 #include <vector>
nuclear@7 5 #include <map>
nuclear@7 6 #include <assimp/scene.h>
nuclear@38 7 #include <psys/psys.h>
nuclear@2 8 #include "mesh.h"
nuclear@4 9 #include "light.h"
nuclear@48 10 #include "audio/sample.h"
nuclear@2 11
nuclear@3 12 enum {
nuclear@3 13 TILE_NORTH = 1,
nuclear@3 14 TILE_SOUTH = 2,
nuclear@3 15 TILE_EAST = 4,
nuclear@3 16 TILE_WEST = 8,
nuclear@7 17 TILE_ALL = 0xffff
nuclear@3 18 };
nuclear@3 19
nuclear@48 20 enum {
nuclear@48 21 TILE_SAMPLE_WALK,
nuclear@48 22 TILE_SAMPLE_RUN,
nuclear@48 23
nuclear@48 24 MAX_TILE_SAMPLES
nuclear@48 25 };
nuclear@48 26
nuclear@11 27 class TileSet;
nuclear@11 28
nuclear@1 29 class Tile {
nuclear@2 30 private:
nuclear@11 31 TileSet *tset;
nuclear@11 32
nuclear@48 33 AudioSample *samples[MAX_TILE_SAMPLES];
nuclear@48 34
nuclear@2 35 std::vector<Mesh*> meshes;
nuclear@46 36 std::vector<unsigned int> mesh_side, light_side, psys_side;
nuclear@3 37 std::vector<Light*> lights;
nuclear@45 38 // attributes for gridcell-unique particle systems
nuclear@38 39 std::vector<struct psys_attributes*> psattr;
nuclear@45 40 // global particle systems (simulated once, drawn for each tile instance).
nuclear@45 41 std::vector<struct psys_emitter*> psys_global;
nuclear@46 42 long last_upd;
nuclear@2 43
nuclear@4 44 int load_lights(const aiScene *scn);
nuclear@7 45 int load_meshes(const aiScene *scn, const std::map<aiMesh*, aiNode*> &nmap);
nuclear@4 46
nuclear@1 47 public:
nuclear@11 48 Tile(TileSet *tileset = 0);
nuclear@38 49 ~Tile();
nuclear@11 50
nuclear@48 51 AudioSample *get_sample(int sidx) const;
nuclear@48 52
nuclear@46 53 const struct psys_attributes * const *get_unique_psys() const;
nuclear@45 54 int get_unique_psys_count() const;
nuclear@45 55
nuclear@1 56 bool load(const char *fname);
nuclear@1 57
nuclear@38 58 void update(unsigned long msec, float dt);
nuclear@38 59
nuclear@3 60 void draw(unsigned int drawmask) const;
nuclear@23 61 void draw_lights(unsigned int drawmask) const;
nuclear@46 62 void draw_post(unsigned int drawmask) const;
nuclear@1 63 };
nuclear@1 64
nuclear@5 65
nuclear@1 66 #endif // TILE_H_