42 lines
1017 B
C++
42 lines
1017 B
C++
#ifndef MESHNODE_H
|
|
#define MESHNODE_H
|
|
|
|
#include "graphicalnode.h"
|
|
#include "glm/mat4x4.hpp"
|
|
#include "SparrowRenderer/scene.h"
|
|
|
|
class btRigidBody;
|
|
class btIndexedMesh;
|
|
class btRigidBody;
|
|
|
|
/**
|
|
* @brief The MeshNode class holds a mesh
|
|
*/
|
|
|
|
class MeshNode : public GraphicalNode
|
|
{
|
|
protected:
|
|
GeometryNode m_geometry;
|
|
|
|
// physics
|
|
btRigidBody *m_rigidBody;
|
|
|
|
public:
|
|
// WARNING ! this class doesn't handle the destruction of the rendered mesh and the eventually generated rigidbody
|
|
// this behaviour allows the use of the same meshes in multiple nodes
|
|
MeshNode(Mesh* mesh, bool visible = true) : GraphicalNode(visible), m_geometry(mesh, glm::mat4()), m_rigidBody(nullptr) {}
|
|
|
|
virtual void setSceneTree(SceneTree* tree);
|
|
|
|
virtual void update();
|
|
|
|
void setDepth(float depth);
|
|
|
|
virtual GeometryNode* getGeometryNode() { return &m_geometry; }
|
|
|
|
// this creates a new rigidbody, you must handle its destruction manually
|
|
btRigidBody* buildStaticCollider();
|
|
};
|
|
|
|
#endif // MESHNODE_H
|