00001 /********************************************************************** 00002 *< 00003 FILE: IGame.h 00004 00005 DESCRIPTION: Scene and Node interfaces for IGame 00006 00007 CREATED BY: Neil Hazzard, Discreet 00008 00009 HISTORY: created 02/02/02 00010 00011 IGame Version: 1.122 00012 00013 *> Copyright (c) 2002, All Rights Reserved. 00014 **********************************************************************/ 00018 #pragma once 00019 00020 #include "..\maxheap.h" 00021 #include "IGameControl.h" 00022 #include "IGameMaterial.h" 00023 #include "IGameObject.h" 00024 #include "IGameStd.h" 00025 00026 00028 00036 class IGameNode: public MaxHeapOperators 00037 { 00038 public: 00040 virtual ~IGameNode() {;} 00041 00043 00046 virtual IGameControl * GetIGameControl() =0; 00047 00049 00053 virtual IGameObject * GetIGameObject()=0; 00054 00056 00061 virtual void ReleaseIGameObject()=0; 00062 00064 00067 virtual MCHAR * GetName() = 0; 00068 00070 00073 virtual int GetNodeID() =0; 00074 00076 00079 virtual INode * GetMaxNode()=0; 00080 00082 00086 virtual GMatrix GetWorldTM(TimeValue t=TIME_NegInfinity)=0; 00087 00089 00093 virtual GMatrix GetLocalTM(TimeValue t=TIME_NegInfinity)=0; 00094 00096 00100 virtual GMatrix GetObjectTM(TimeValue t=TIME_NegInfinity)=0; 00101 00103 00106 virtual IGameNode * GetNodeParent() =0; 00107 00109 00112 virtual int GetChildCount()=0; 00113 00115 00119 virtual IGameNode * GetNodeChild(int index) =0; 00120 00122 00125 virtual int GetMaterialIndex() =0; 00126 00128 00131 virtual IGameMaterial * GetNodeMaterial() =0; 00132 00134 00137 virtual IPoint3 & GetWireframeColor() = 0; 00138 00140 00144 virtual bool IsTarget()=0; 00145 00147 00151 virtual bool IsGroupOwner()=0; 00152 00154 00158 virtual bool IsNodeHidden()=0; 00159 00160 00161 }; 00162 00163 00164 00166 00171 class IGameScene: public MaxHeapOperators 00172 { 00173 public: 00175 virtual ~IGameScene() {;} 00176 00178 00183 virtual void SetPropertyFile(const MCHAR * fileName) = 0; 00184 00186 00191 virtual bool InitialiseIGame(bool selected = false)=0; 00192 00194 00200 virtual bool InitialiseIGame(INode * root, bool Hierarchy = true)=0; 00201 00203 00210 virtual bool InitialiseIGame(Tab<INode *> nodes, bool Hierarchy = true) = 0; 00211 00213 00216 virtual MCHAR * GetSceneFileName() =0; 00217 00219 00222 virtual void SetStaticFrame(int frameNum)=0; 00223 00225 00228 virtual TimeValue GetSceneStartTime() =0; 00229 00231 00234 virtual TimeValue GetSceneEndTime() =0; 00235 00237 00240 virtual int GetSceneTicks()=0; 00241 00242 // Get the number of Top level Parent Node 00247 virtual int GetTopLevelNodeCount()=0; 00248 00250 00253 virtual int GetTotalNodeCount()=0; 00254 00256 00262 virtual IGameNode * GetTopLevelNode(int index) =0; 00263 00265 00268 virtual int GetRootMaterialCount() = 0; 00269 00271 00277 virtual IGameMaterial * GetRootMaterial(int index) =0; 00278 00280 00285 virtual IGameNode * GetIGameNode(INode * node) =0; 00286 00288 00292 virtual IGameNode * GetIGameNode(ULONG NodeID) =0; 00293 00295 00299 virtual Tab<IGameNode*> GetIGameNodeByType(IGameObject::ObjectTypes Type) = 0; 00300 00302 00307 virtual IGameMaterial * GetIGameMaterial(Mtl * mat) = 0; 00308 00310 00315 virtual IGameTextureMap * GetIGameTextureMap (Texmap * texMap) = 0; 00316 00318 00321 virtual void ReleaseIGame()=0; 00322 00323 }; 00324 00329 IGAMEEXPORT IGameScene *GetIGameInterface(); 00330 00335 IGAMEEXPORT float GetIGameVersion(); 00336 00342 IGAMEEXPORT float GetSupported3DSVersion(); 00343 00344 00345 00346