ModelNode.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #ifndef MODEL_NODE_H
  2. #define MODEL_NODE_H
  3. #include <boost/array.hpp>
  4. #include "SceneNode.h"
  5. #include "Resources/RsrcPtr.h"
  6. #include "Util/Accessors.h"
  7. #include "ModelPatchNode.h"
  8. #include "Util/Vec.h"
  9. #include "Collision/Obb.h"
  10. class Model;
  11. /// The model scene node
  12. class ModelNode: public SceneNode
  13. {
  14. public:
  15. ModelNode(bool inheritParentTrfFlag, SceneNode* parent);
  16. virtual ~ModelNode();
  17. /// @name Accessors
  18. /// @{
  19. GETTER_RW(Vec<ModelPatchNode*>, patches, getModelPatchNodes)
  20. const Model& getModel() const {return *model;}
  21. GETTER_R(Col::Obb, visibilityShapeWSpace, getVisibilityShapeWSpace)
  22. /// @}
  23. /// Initialize the node
  24. /// - Load the resource
  25. void init(const char* filename);
  26. /// Update the bounding shape
  27. void moveUpdate();
  28. void frameUpdate(float /*prevUpdateTime*/, float /*crntTime*/) {}
  29. private:
  30. RsrcPtr<Model> model;
  31. Vec<ModelPatchNode*> patches;
  32. Col::Obb visibilityShapeWSpace;
  33. };
  34. inline ModelNode::ModelNode(bool inheritParentTrfFlag, SceneNode* parent)
  35. : SceneNode(SNT_MODEL, inheritParentTrfFlag, parent)
  36. {}
  37. #endif