Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members

IEngine.h

Go to the documentation of this file.
00001 /*
00002 
00003 AmnesiaEngine
00004 Copyright (c) 2006 John DiSanti.
00005 
00006 Permission is hereby granted, free of charge,
00007 to any person obtaining a copy of this software and associated
00008 documentation files (the "Software"), to deal in the Software
00009 without restriction, including without limitation the rights to
00010 use, copy, modify, merge, publish, distribute, sublicense,
00011 and/or sell copies of the Software, and to permit persons to
00012 whom the Software is furnished to do so, subject to the following
00013 conditions:
00014 
00015 The above copyright notice and this permission notice shall be included
00016 in all copies or substantial portions of the Software.
00017 
00018 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
00019 INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
00020 PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
00021 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
00022 OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
00023 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
00024 
00025 */
00026 
00027 #ifndef AMN_IENGINE_H
00028 #define AMN_IENGINE_H
00029 
00030 #if (_WIN32 || _WIN64)
00031         #define WIN32_LEAN_AND_MEAN
00032         #include <windows.h>
00033 
00034         #ifdef AMNESIAENGINE_EXPORTS
00035                 #define AMN_API __declspec(dllexport)
00036         #else
00037                 #define AMN_API __declspec(dllimport)
00038         #endif
00039 #else
00040         #define AMN_API
00041         #define _LINUX
00042 #endif
00043 
00044 #include "IArray.h"
00045 #include "IReference.h"
00046 #include "IVideoDevice.h"
00047 #include "IFileManager.h"
00048 #include "ISceneGraph.h"
00049 #include "ISoundDevice.h"
00050 
00098 
00099 namespace amn
00100 {
00102         class IEngine : public IReference
00103         {
00104         public:
00105                 IEngine(const char* configurationFileName) {}
00106                 virtual ~IEngine() {}
00107 
00109                 virtual ISceneGraph* getSceneGraph() = 0;
00111                 virtual IVideoDevice* getVideoDevice() = 0;
00113                 virtual ISoundDevice* getSoundDevice() = 0;
00115                 virtual IFileManager* getFileManager() = 0;
00116 
00118                 virtual bool update() = 0;
00120                 virtual void close() = 0;
00121 
00123                 virtual int addSceneGraph(ISceneGraph* graph) = 0;
00125                 virtual void removeSceneGraph(int sceneGraphID) = 0;
00127                 virtual void setCurrentSceneGraph(int sceneGraphID) = 0;
00128 
00130                 virtual long getTime() = 0;
00131 
00132         protected:
00133                 ISceneGraph* sceneGraph;
00134                 IVideoDevice* videoDevice;
00135                 ISoundDevice* soundDevice;
00136                 IFileManager* fileManager;
00137 
00138                 IArray<ISceneGraph*> sceneGraphArray;
00139         };
00140 };
00141 
00143 
00166 AMN_API amn::IEngine* createEngine(const char* configurationFileName);
00167 
00168 #endif//AMN_IENGINE_H
00169 
00170 /* End of File */

Generated on Wed Feb 1 22:23:26 2006 for AmnesiaEngine by  doxygen 1.4.2