// %flair:license{ // This file is part of the Flair framework distributed under the // CECILL-C License, Version 1.0. // %flair:license} // created: 2013/03/25 // filename: GenericObject.h // // author: Cesar Richard // Copyright Heudiasyc UMR UTC/CNRS 7253 // // version: $Id: $ // // purpose: classe definissant un modele a simuler // /*********************************************************************/ #ifndef GENERICOBJECT_H #define GENERICOBJECT_H #ifdef GL #include "Simulator.h" #include "ConditionVariable.h" #include "Gui.h" #include "Gui_impl.h" #include #include #include #include #include #include "FollowMeCamera.h" #include #include #include #include #include namespace irr { class SEvent; namespace scene { class IMesh; class ISceneManager; class ITriangleSelector; class IMetaTriangleSelector; class ISceneNodeAnimatorCollisionResponse; } } class Gui_impl; class Simulator_impl; namespace flair { namespace core { class ConditionVariable; } namespace simulator { class Simulator; class AnimPoursuite; class GenericObject : public irr::scene::IMeshSceneNode { friend class ::Simulator_impl; public: GenericObject(Simulator *parent, std::string name, irr::scene::ISceneManager *sceneManager); virtual ~GenericObject(); // FROM IMPL irr::scene::ITriangleSelector *TriangleSelector(void); irr::core::aabbox3d box; // END FROM IMPL irr::scene::ISceneNode *getSceneNode(); virtual const irr::core::aabbox3d &getBoundingBox(void) const { return box; } void setPosition(irr::core::vector3df position); void setScale(float value); void setScale(irr::core::vector3df scale); void setRotation(irr::core::vector3df rotation); void OnRegisterSceneNode(void); void setMesh(irr::scene::IMesh *mesh); irr::scene::IMesh *getMesh(void); void render(void); virtual void setReadOnlyMaterials(bool readonly){}; virtual bool isReadOnlyMaterials(void) const { return false; } virtual irr::scene::IShadowVolumeSceneNode * addShadowVolumeSceneNode(const irr::scene::IMesh *shadowMesh = 0, irr::s32 id = -1, bool zfailmethod = true, irr::f32 infinity = 1000.0f) { return NULL; } private: void UpdateFrom(core::io_data *data){}; irr::scene::IMesh *mesh; irr::scene::ITriangleSelector *selector; flair::core::ConditionVariable *cond; irr::video::SMaterial Material; }; } // end namespace simulator } // end namespace flair #endif // GL #endif // GENERICOBJECT_H