/*========================================================================= * * ObjLoad.c - Loading functions for OBJ file * * Version 1.0 * Revision date * *=======================================================================*/ #include "ObjLoad.h" #include "conventi.h" #include "print.h" #include "system.h" #include "Banks.h" #include "PhySave.h" #include "ZooSave.h" //--- Global statics -------------------------------------------------------- MLT_tdstObjElement **gs_hModule = NULL; long gs_lModuleIndex = 0; //-------------------------------------------------------------------- /**************************************************************************** * Description: register loading functions for OBJ file * * Parameters: sRawData : source directory * sGameData : destination directory *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void MLT_vInitOBJLoad () { SCR_fn_v_RdL0_RegisterCallback(M_A3dObjectsTableELEMENT, MLT_xLoadObj, SCR_CRC_c_RdL0_ForSection); SCR_fn_v_RdL0_RegisterCallback(M_A3dObjectsTableGENERAL, MLT_xLoadObjHeader, SCR_CRC_c_RdL0_ForSection); } /**************************************************************************** * Description: Load all the object in Obj file * * Parameters: *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void MLT_vLoadModuleLib() { SCR_tdst_Cxt_Values *p_stVal; xString szFileName; //Inits sprintf(szFileName, "%s.obj", g_sFileIn); p_stVal = SCR_fnp_st_RdL0_AnalyseSection(szFileName, SCR_CDF_uw_Anl_ForceAnalyse); } /**************************************************************************** * Description: Delete the list of objects * * Parameters: *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void MLT_vDeleteModuleLib() { long i; for (i=0; isSectionObj, "%s", sSectionObj); sprintf(gs_hModule[lNumberInTable-1]->sSectionMod, "%s", sSectionMod); gs_hModule[lNumberInTable-1]->bFlag = bNocol; if (iType==0) //bIs3dObject) { gs_hModule[lNumberInTable-1]->iType = 0; sprintf(gs_hModule[lNumberInTable-1]->sTete,"%s", sTete); sprintf(gs_hModule[lNumberInTable-1]->sLetter,"%s", sLetter); sprintf(gs_hModule[lNumberInTable-1]->sNeutral,"%s", sNeutral); gs_hModule[lNumberInTable-1]->lValue = lValue; } if (iType==1) //bIsSoundEvent) { gs_hModule[lNumberInTable-1]->iType = 1; gs_hModule[lNumberInTable-1]->lSoundReference = lVal; } if (iType==2) //bIsMechanicEvent) { gs_hModule[lNumberInTable-1]->iType = 2; strcpy(gs_hModule[lNumberInTable-1]->sObject, sObject); } if (iType==3)//bIsGenericEvent) { gs_hModule[lNumberInTable-1]->iType = 3; strcpy(gs_hModule[lNumberInTable-1]->sData, sData); } if (iType==4) //bIsGenerateEvent) { gs_hModule[lNumberInTable-1]->iType = 4; strcpy(gs_hModule[lNumberInTable-1]->sData, sData); } if (iType==5) //bIsCameraEvent) { gs_hModule[lNumberInTable-1]->iType = 5; strcpy(gs_hModule[lNumberInTable-1]->sData, sData); } if (iType) //if is an event { gs_hModule[lNumberInTable-1]->lFirstCall = lFirstCall; gs_hModule[lNumberInTable-1]->lPeriod = lPeriod; gs_hModule[lNumberInTable-1]->lPriority = lPriority; } if (iType==6) // bIsFake) gs_hModule[lNumberInTable-1]->iType = 6; if(bCustomZoom) { long i; gs_hModule[lNumberInTable-1]->bCustomZoom = TRUE; for(i=0 ; i<9 ; i++) gs_hModule[lNumberInTable-1]->a9_dCustomZoom[i] = a9_dCustomZoom[i]; } sprintf(gs_hModule[lNumberInTable-1]->sTete,"%s", sTete); sprintf(gs_hModule[lNumberInTable-1]->sLetter,"%s", sLetter); sprintf(gs_hModule[lNumberInTable-1]->sNeutral,"%s", sNeutral); gs_hModule[lNumberInTable-1]->lValue = lValue; // save Tbl SCR_fn_v_RdL0_SplitSectionName(gs_hModule[lNumberInTable-1]->sSectionObj, sFile, sAction, sIdent); sprintf(sFile, "%s.tbl", g_sFileIn); sprintf(sIdent, "%d", lNumberInTable); gs_hModule[lNumberInTable-1]->lNumberInTable = lNumberInTable; SCR_fn_v_RdL0_ComputeSectionName(sSection, sFile, M_Tbl, sIdent); SCR_fn_v_SvL1_RegisterNotify(sSection, MLT_vSaveTblFromObj, gs_hModule[lNumberInTable-1], SCR_EA_Ntfy_AddOrModifySection); // the geometric entries must be saved only for the objects ! if (!iType) { // Save Phy SCR_fn_v_RdL0_SplitSectionName(gs_hModule[lNumberInTable-1]->sSectionObj, sFile, sAction, sIdent); sprintf(sFile, "%s.phy", g_sFileIn); sprintf(sIdent, "PO_%d", lNumberInTable); SCR_fn_v_RdL0_ComputeSectionName(sSection, sFile, M_Phy, sIdent); SCR_fn_v_SvL1_RegisterNotify(sSection, MLT_vSavePhyFromObj, gs_hModule[lNumberInTable-1], SCR_EA_Ntfy_AddOrModifySection); // Save Zoo SCR_fn_v_RdL0_SplitSectionName(gs_hModule[lNumberInTable-1]->sSectionObj, sFile, sAction, sIdent); sprintf(sFile2, "%s.zoo", g_sFileIn); SCR_fn_v_RdL0_ComputeSectionName(sFile, sFile2, M_AllCollideSets, ""); sprintf(sIdent2, "CS_%s", sIdent); SCR_fn_v_RdL0_ComputeSectionName(sSection, sFile, M_CS, sIdent2); SCR_fn_v_SvL1_RegisterNotify(sFile, MLT_vSaveAllCollideSetsSection, NULL, SCR_EA_Ntfy_AddOrModifySection); SCR_fn_v_SvL1_RegisterNotify(sSection, MLT_vSaveZooFromObj, gs_hModule[lNumberInTable-1], SCR_EA_Ntfy_AddOrModifySection); } break; } return SCR_ERV_Anl_NormalReturn; }