Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

System.h

00001 /*************************************************************************** 00002 * This file is part of OpenCAL: Open Computer Animation Library * 00003 * I created OpenCAL as my master's thesis Computer Science (multimedia) * 00004 * at the tUL university in Diepenbeek, Belgium * 00005 * * 00006 * Copyright (C) 2003-2004 by Jeroen Dierckx * 00007 * jeroen.dierckx@student.luc.ac.be * 00008 * * 00009 ***************************************************************************/ 00010 00011 #ifndef OPENCAL_SYSTEM_H 00012 #define OPENCAL_SYSTEM_H 00013 00014 // Includes 00015 #include <OpenCAL/global.h> 00016 00017 #include <vector> 00018 using std::vector; 00019 00020 00021 namespace OpenCAL 00022 { 00023 // Forward declarations 00024 class Object; 00025 class Actor; 00026 class Agent; 00027 class Renderer; 00028 class Picker; 00029 00036 class OPENCAL_API System 00037 { 00038 private: 00039 bool m_destructing; 00040 00041 protected: 00042 // Typedefs 00043 typedef vector<Object *> ObjectList; 00044 typedef vector<Actor *> ActorList; 00045 typedef vector<Agent *> AgentList; 00046 typedef vector<System *> SystemList; 00047 00048 // Member variables 00049 ObjectList m_objects; 00050 ActorList m_actors; 00051 AgentList m_agents; 00052 SystemList m_systems; 00053 00054 System *m_parent; 00055 bool m_initialized, m_draw; 00056 bool m_enabled; 00057 00059 float m_accuracyHint; 00060 00061 Object *m_selectedObject; 00062 Renderer *m_renderer; 00063 Picker *m_picker; 00064 00065 public: 00066 // Destructor 00067 virtual ~System(); 00068 00069 // Get functions 00070 Object *getObject(unsigned int i) { return m_objects[i]; } 00072 Actor *getActor(unsigned int i) { return m_actors[i]; } 00074 Agent *getAgent(unsigned int i) { return m_agents[i]; } 00076 System *getSystem(unsigned int i) { return m_systems[i]; } 00078 00079 // Render functions 00080 void setRenderer(Renderer *renderer) { m_renderer = renderer; } 00081 Renderer *getRenderer() { return m_renderer; } 00082 virtual void render(); 00083 00084 // Pick functions 00085 void setPicker(Picker *picker) { m_picker = picker; } 00086 Picker *getPicker() { return m_picker; } 00087 virtual void renderPicking(); 00088 virtual Object *pick(int x, int y); 00089 00090 System *getParent() { return m_parent; } 00091 const System *getParent() const { return m_parent; } 00092 00093 Object *getSelectedObject() { return m_selectedObject; } 00094 void selectObject(Object *object) { m_selectedObject = object; } 00095 void unselectObject() { m_selectedObject = 0; } 00096 00097 // Information functions 00098 unsigned int numObjects() const { return m_objects.size(); } 00099 unsigned int numActors() const { return m_actors.size(); } 00100 unsigned int numAgents() const { return m_agents.size(); } 00101 unsigned int numSystems() const { return m_systems.size(); } 00102 unsigned int numChildren() const { return m_systems.size(); } 00103 bool hasParent() const { return (m_parent != 0); } 00104 00105 // Enable functions 00106 bool isEnabled() const { return m_enabled; } 00107 void enable() { m_enabled = true; } 00108 void disable() { m_enabled = false; } 00109 void toggle() { m_enabled = !m_enabled; } 00110 void setEnabled(bool enabled) { m_enabled = enabled; } 00111 00112 // Draw functions 00113 bool getDraw() const { return m_draw; } 00114 void setDraw(bool enabled = true) { m_draw = enabled; } 00115 void enableDraw() { m_draw = true; } 00116 void disableDraw() { m_draw = false; } 00117 void toggleDraw() { m_draw = !m_draw; } 00118 00119 // General functions 00120 virtual bool isInitialized() const { return m_initialized; } 00121 virtual void initialize(); 00122 00123 // Step functions 00124 virtual void step(float deltaSeconds); 00125 /* 00126 #ifdef USE_OPENGL 00127 virtual void drawGL(); 00128 virtual void drawPickGL(); 00129 virtual Object *pickGL(int x, int y); 00130 #endif // USE_OPENGL 00131 */ 00132 00133 protected: 00134 // Constructors 00135 // protected, so no instance of this base class can be made 00136 System(System *parent); 00137 00138 // Add functions 00139 virtual void addObject(Object *object) { m_objects.push_back(object); } 00140 virtual void addActor(Actor *actor) { m_actors.push_back(actor); } 00141 virtual void addAgent(Agent *agent) { m_agents.push_back(agent); } 00142 virtual void addSystem(System *system) { m_systems.push_back(system); } 00143 00144 // Delete functions 00145 virtual void deleteObject(Object *object); 00146 virtual void deleteActor(Actor *actor); 00147 virtual void deleteAgent(Agent *agent); 00148 virtual void deleteSystem(System *system); 00149 00150 //private: 00151 // Private functions 00152 bool isDestructing() const { return m_destructing; } 00153 00154 friend class Object; 00155 friend class Actor; 00156 friend class Agent; 00157 }; 00158 } 00159 00160 #endif // OPENCAL_SYSTEM_H

Generated on Sun Aug 15 19:19:23 2004 for OpenCAL: Open Computer Animation Library by doxygen 1.3.8