update
This commit is contained in:
47
src/world/scene.h
Normal file
47
src/world/scene.h
Normal file
@@ -0,0 +1,47 @@
|
||||
#include <vector>
|
||||
#include "glm/glm.hpp"
|
||||
#include <glm/gtx/quaternion.hpp>
|
||||
#include "../gfx/gfx.h"
|
||||
|
||||
enum EntityFlags {
|
||||
EntityFlags_Visible=1<<0,
|
||||
EntityFlags_Dead=1<<1,
|
||||
EntityFlags_Render=1<<2,
|
||||
};
|
||||
|
||||
struct Entity {
|
||||
Mesh *mesh;
|
||||
Texture *tex;
|
||||
uint32 graphNodeHandle;
|
||||
uint64 flags;
|
||||
};
|
||||
|
||||
struct SceneGraphNode {
|
||||
glm::mat4 local;
|
||||
glm::mat4 world;
|
||||
glm::vec3 translation;
|
||||
glm::quat rotation;
|
||||
glm::vec3 scale;
|
||||
std::vector<uint32> children;
|
||||
uint32 entityHandle;
|
||||
uint32 parentHandle;
|
||||
};
|
||||
|
||||
struct Scene {
|
||||
uint32 sceneRoot;
|
||||
std::vector<Entity> entities;
|
||||
std::vector<SceneGraphNode> graphNodes;
|
||||
};
|
||||
|
||||
uint32 createEntity(Scene *s);
|
||||
Entity *getEntity(Scene *s);
|
||||
SceneGraphNode *getSceneGraphNode(Scene *s, int id);
|
||||
uint32 createSceneGraphNode(Scene *s);
|
||||
Scene createScene(Scene *s);
|
||||
void initGraphNode(SceneGraphNode *n);
|
||||
void recalcGraphNode(SceneGraphNode *n);
|
||||
void recalcSceneGraphNode(Scene *s, uint32 parentHandle);
|
||||
void recalcScene(Scene *s);
|
||||
void removeEntity(Scene *s, uint32 entityHandle);
|
||||
void sceneNodeAddEntity(Scene *s, uint32 graphNodeHandle, uint32 entityHandle);
|
||||
SceneGraphNode *getSceneGraphNodeForEntity(Scene *s, uint32 entityHandle);
|
||||
Reference in New Issue
Block a user