bluecore/engine/SceneNode.h

73 lines
1.6 KiB
C
Raw Permalink Normal View History

2008-01-16 12:45:17 +01:00
#ifndef BLUECORE_SCENE_NODE_H
#define BLUECORE_SCENE_NODE_H
#include "Camera.h"
2008-01-20 11:16:37 +01:00
#include "RenderQueue.h"
#include "RigidBodySimulation.h"
#include "ModelManager.h"
2008-01-16 12:45:17 +01:00
#include "Utilities/Referenced.h"
#include "Utilities/Named.h"
#include "Utilities/Log.h"
#include "Utilities/Activated.h"
#include "Math/Transformation.h"
#include <iostream>
#include <list>
namespace BlueCore
{
class SceneNode : public Referenced, public Named, public Activated
{
public:
typedef std::list< ref_ptr<SceneNode> > SceneNodeList;
protected:
SceneNode *_Parent;
SceneNodeList _Children;
Transformation _RelativeTransformation;
Transformation _AbsoluteTransformation;
2008-01-24 23:16:53 +01:00
ref_ptr<RigidBody> _RigidBody;
ref_ptr<Model> _Model;
2008-01-20 11:16:37 +01:00
2008-01-16 12:45:17 +01:00
public:
SceneNode();
SceneNode(const std::string &name);
virtual ~SceneNode();
SceneNode *getParent() const;
const SceneNodeList &getChildren() const;
2008-01-24 23:16:53 +01:00
void setRigidBody (RigidBody* body);
RigidBody* getRigidBody ();
void setModel (Model* body);
Model* getModel ();
2008-01-16 12:45:17 +01:00
void attach(SceneNode *node);
void detach(SceneNode *node);
void detachAll();
void detachFromParent();
2008-01-20 11:16:37 +01:00
2008-01-16 12:45:17 +01:00
virtual void update(Scalar time);
2008-01-20 11:16:37 +01:00
virtual void queue (RenderQueue *queue, Camera *camera);
2008-01-16 12:45:17 +01:00
const Transformation& getRelativeTransformation();
const Transformation& getAbsoluteTransformation();
void setRelativeTranslation (const Vector3 &translation);
void setRelativeRotation (const Quaternion &rotation);
virtual void updateAbsoluteTransformation();
};
} // namespace BlueCore
#endif