/*******************************************************/ /**** For the structures and variables declarations ****/ /*******************************************************/ #define D_Micro_StructureDefine #define D_Micro_VariableDefine #include "ToolsCPA.h" #include "SND.h" #include "Options/Options.h" #include "Macros.h" #include "Actions/AllActs.h" #include "Structur/MemGame.h" #include "Structur/ErrGame.h" #include "Structur/Objects.h" #include "Structur/GameScpt.h" #include "Structur/StdObjSt.h" #include "Structur/EngMode.h" #include "Basic.h" #include "ObjInit.h" #include "ZeMem.h" #include "ldt.h" #define lTagMatrixRotation 'atoR' #define lTagMatrixTranslation 'narT' #define lTagMicroIsActive 'tcAs' #define lTagMicroIsInactive 'anIs' /***************************************************************** Function name : fn_iCreateMicro Description : Author : Ovidiu Scripa (oscripa@ubisoft.ro) - ROMTEAM Creation Date : 13-Oct-98 Modified : Return type : int Argument : LDT_tdst_Link *pLink *****************************************************************/ int fn_iCreateMicro( LDT_tdst_Link *pLink ) { MS_tdxHandleToMicro h_MS_Micro; struct tdstEngineObject_ *p_stEngineObject = (struct tdstEngineObject_ *)pLink->pParent->pObject; MMG_fn_vBeginMemoryInfo (MMG_C_lTypeMiniStructure , MMG_C_lSubTypeMicro , p_stEngineObject); h_MS_Micro = fn_h_MicroRealAlloc(); MMG_fn_vEndMemoryInfo (); p_stEngineObject->h_Micro = h_MS_Micro; h_MS_Micro->bIsActive = 0; POS_fn_vSetIdentityMatrix( h_MS_Micro->hMicroMatrix ); pLink->pObject = (void*)h_MS_Micro; return 0; } /***************************************************************** Function name : fn_iLoadMicro Description : Author : Ovidiu Scripa (oscripa@ubisoft.ro) - ROMTEAM Creation Date : 13-Oct-98 Modified : Return type : int Argument : LDT_tdst_Link *pLink *****************************************************************/ int fn_iLoadMicro( LDT_tdst_Link *pLink ) { LDT_tdeParseResult result=ParseResult_BeginSection; MS_tdxHandleToMicro h_MS_Micro = (MS_tdxHandleToMicro)pLink->pObject; struct tdstEngineObject_ *p_stEngineObject = (struct tdstEngineObject_ *)pLink->pParent->pObject; MTH3D_tdstVector stX,stY,stZ; while( result!=ParseResult_EndSection ) { result=LDT_GetNextEntry(); switch( result ) { case ParseResult_Entry: /* an entry */ { char *szEntry=LDT_szGetEntryName(); switch (*(long*)szEntry) { case lTagMatrixRotation : /* */ { MTH3D_M_vSetVectorElements(&stX, (float)atof(LDT_szGetParam(1)), (float)atof(LDT_szGetParam(2)), (float)atof(LDT_szGetParam(3)) ); MTH3D_M_vSetVectorElements(&stY, (float)atof(LDT_szGetParam(4)), (float)atof(LDT_szGetParam(5)), (float)atof(LDT_szGetParam(6)) ); MTH3D_M_vSetVectorElements(&stZ, (float)atof(LDT_szGetParam(7)), (float)atof(LDT_szGetParam(8)), (float)atof(LDT_szGetParam(9)) ); POS_fn_vSetRotationMatrix(h_MS_Micro->hMicroMatrix,&stX,&stY,&stZ); } break; case lTagMatrixTranslation : /* */ { MTH3D_M_vSetVectorElements(&stX, (float)atof(LDT_szGetParam(1)), (float)atof(LDT_szGetParam(2)), (float)atof(LDT_szGetParam(3)) ); POS_fn_vSetTranslationVector(h_MS_Micro->hMicroMatrix,&stX); } break; case lTagMicroIsActive : /* */ { h_MS_Micro->bIsActive = 1; } break; case lTagMicroIsInactive : /* */ { h_MS_Micro->bIsActive = 0; } break; } } } } return 0; }