00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
#ifndef OPENCAL_OBJECT_H
00012
#define OPENCAL_OBJECT_H
00013
00014
00015
#include <OpenCAL/global.h>
00016
00017
#include <OpenCAL/Vector3.h>
00018
using OpenCAL::Utils::Vector3;
00019
#include <OpenCAL/Matrix44.h>
00020
using OpenCAL::Utils::Matrix44;
00021
00022
00023
namespace OpenCAL
00024 {
00025
00026
class System;
00027
00031 class OPENCAL_API Object
00032 {
00033
protected:
00034
00035
System *m_parent;
00036
bool m_initialized, m_draw;
00037
bool m_enabled;
00038
mutable Vector3 m_position;
00039
00040
public:
00041
00042
virtual ~Object();
00043
00044
00045
const System *getParent()
const {
return m_parent; }
00046
System *getParent() {
return m_parent; }
00047
00048
virtual const Vector3 &getPosition()
const {
return m_position; }
00049
virtual Vector3 *getPositionP() {
return &m_position; }
00050
00051
00052
void setPosition(
const Vector3 &position) { m_position = position; }
00053
00054
00055
bool isEnabled()
const {
return m_enabled; }
00056
virtual void enable() { m_enabled =
true; }
00057
virtual void disable() { m_enabled =
false; }
00058
void toggle() { m_enabled = !m_enabled; }
00059
void setEnabled(
bool enabled) { m_enabled = enabled; }
00060
00061
00062
bool getDraw()
const {
return m_draw; }
00063
void setDraw(
bool enabled =
true) { m_draw = enabled; }
00064
void enableDraw() { m_draw =
true; }
00065
void disableDraw() { m_draw =
false; }
00066
void toggleDraw() { m_draw = !m_draw; }
00067
00068
00069
void move(
const Vector3 &direction,
float distance);
00070
void moveTo(
const Vector3 &position);
00071
00072
00073
virtual void render() = 0;
00074
virtual void renderPicking() { render(); }
00075
00076
00077
virtual Matrix44 getMatrix()
const;
00078
virtual void getMatrix(
Matrix44 *matrix)
const;
00079
00080
virtual bool isInitialized()
const {
return m_initialized; }
00081
virtual void initialize();
00082
00083
00084
00085
00086
00087
00088
00089
protected:
00090
00091
00092 Object(
System *parent);
00093
00094
void assureInit();
00095 };
00096 };
00097
00098
#endif // OPENCAL_OBJECT_H