62 lines
1.4 KiB
C++
62 lines
1.4 KiB
C++
#ifndef BLUECORE_SCENE_NODE_H
|
|
#define BLUECORE_SCENE_NODE_H
|
|
|
|
#include "Camera.h"
|
|
#include "RenderDevice.h"
|
|
|
|
#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;
|
|
|
|
public:
|
|
|
|
SceneNode();
|
|
SceneNode(const std::string &name);
|
|
virtual ~SceneNode();
|
|
|
|
SceneNode *getParent() const;
|
|
const SceneNodeList &getChildren() const;
|
|
|
|
void attach(SceneNode *node);
|
|
void detach(SceneNode *node);
|
|
void detachAll();
|
|
void detachFromParent();
|
|
|
|
virtual void update(Scalar time);
|
|
virtual void render (RenderDevice *device, Camera *camera);
|
|
|
|
const Transformation& getRelativeTransformation();
|
|
const Transformation& getAbsoluteTransformation();
|
|
|
|
void setRelativeTranslation (const Vector3 &translation);
|
|
void setRelativeRotation (const Quaternion &rotation);
|
|
|
|
virtual void updateAbsoluteTransformation();
|
|
};
|
|
|
|
} // namespace BlueCore
|
|
|
|
#endif
|