void VLineFollowerComponent::Serialize(VArchive &ar) { char iLocalVersion = 1; IVObjectComponent::Serialize(ar); if (ar.IsLoading()) { ar >> iLocalVersion; VASSERT_MSG(iLocalVersion==1, "Invalid local version. Please re-export"); ar.ReadStringBinary(Model_AnimationName, sizeof(Model_AnimationName)); ar.ReadStringBinary(Path_Key, sizeof(Path_Key)); ar >> Path_NumberSteps; ar >> Path_TriggerDistance; ar >> Path_InitialOffset; ar >> Model_DeltaRotation; ar >> Model_GroundOffset; ar >> Model_CapsuleHeight; ar >> Model_CapsuleRadius; ar >> Debug_DisplayBoxes; Debug_RenderMesh = false; CommonInit(); }
void VFmodEvent::Serialize( VArchive &ar ) { VisObject3D_cl::Serialize(ar); char iVersion = -1; if (ar.IsLoading()) { ar >> iVersion; VASSERT(iVersion >= VFMOD_EVENT_VERSION_0 && iVersion <= VFMOD_EVENT_VERSION_CURRENT); // load resource char szEventProjectPath[FS_MAX_PATH+1]; char szEventGroupName[FS_MAX_PATH+1]; ar.ReadStringBinary(szEventProjectPath, FS_MAX_PATH); ar.ReadStringBinary(szEventGroupName, FS_MAX_PATH); // event properties ar >> m_sEventName; // @@@ Force events to be non-disposable //m_iFlags |= VFMOD_FLAG_NODISPOSE; ar >> m_iFlags; if(iVersion >= VFMOD_EVENT_VERSION_1) { ar >> m_bPlayedOnce; }
void VFmodSoundObject::Serialize( VArchive &ar ) { VisObject3D_cl::Serialize(ar); char iVersion = -1; if (ar.IsLoading()) { ar >> iVersion; VASSERT(iVersion >= VFMOD_SOUNDOBJECT_VERSION_0 && iVersion <= VFMOD_SOUNDOBJECT_VERSION_CURRENT); // first, load resource file int iResourceFlags; char szResourceFile[FS_MAX_PATH+1]; ar >> iResourceFlags; ar.ReadStringBinary(szResourceFile, FS_MAX_PATH); m_spResource = VFmodManager::GlobalManager().LoadSoundResource(szResourceFile, iResourceFlags); // sound properties ar >> m_iFlags; ar >> m_iPriority; ar >> m_fVolume >> m_fPan >> m_fConeInside >> m_fConeOutside; ar >> m_fFadeMin >> m_fFadeMax; ar >> m_bFading; ar >> m_fVolumeFadeTime >> m_fVolumeFadeDuration; ar >> m_fVolumeFadeStart >> m_fVolumeFadeTarget; ar >> m_fPitch; if(iVersion >= VFMOD_SOUNDOBJECT_VERSION_1) { ar >> m_bPlayedOnce; }
//TODO: serialize added events! void VAnimationComponent::Serialize( VArchive &ar ) { char iLocalVersion = 0; IVObjectComponent::Serialize(ar); if (ar.IsLoading()) { ar >> iLocalVersion; VASSERT_MSG(iLocalVersion == 0, "Invalid local version. Please re-export"); char pBuffer[512]; ar.ReadStringBinary(pBuffer, 512); if(pBuffer && pBuffer[0]) { unsigned int flags = 0; float time = 0; bool isPlaying = true; ar >> flags; ar >> time; ar >> isPlaying; Play(pBuffer, (flags&VANIMCTRL_LOOP)!=0); if(!isPlaying) Pause(); SetTime(time); }
void VPrefabInstance::Serialize( VArchive& ar ) { VisBaseEntity_cl::Serialize(ar); char prefabVersion = 0; if(ar.IsLoading()) { char loc_sFilename[FS_MAX_PATH]; ar >> prefabVersion; VASSERT_MSG(prefabVersion==0, "Invalid version number, please re-export") ar.ReadStringBinary(loc_sFilename); VPrefab* loadedPrefab = VPrefabManager::GlobalManager().LoadPrefab(loc_sFilename); VPrefabInstanceInfo info; info.m_pParentObject = this; info.m_bOutputInstances = false; info.m_vInstancePos = GetPosition(); info.m_vInstanceEuler = GetOrientation(); loadedPrefab->Instantiate(info); }
void ClothEntity_cl::Serialize( VArchive &ar ) { if (ar.IsLoading()) { VisBaseEntity_cl::Serialize(ar); char iVersion,iModelType; char szModelFile[FS_MAX_PATH+1]; int iReserved; bool bTemp; hkvVec4 vPos,vOri; ar >> iVersion;VASSERT(iVersion==0 || iVersion==1); ar >> iModelType;VASSERT(iModelType==0); // currently from file only. Later maybe planar subdiv. ar.ReadStringBinary(szModelFile,FS_MAX_PATH); ar >> vPos; ar >> vOri; if (iVersion>=1) m_vCurrentScaling.SerializeAsVisVector (ar); ar >> m_fPhysicsTicks; ar >> bTemp;m_bSimulateWhenVisible=bTemp; ar >> m_fGravity; BaseInit(); m_vCurrentPos = vPos.getAsVec3 (); // do not apply delta in SetClothPosition SetMeshModel(szModelFile, m_vCurrentScaling); ar >> bTemp; // has mesh? if (bTemp) { VASSERT(m_spMesh!=NULL); m_spMesh->SerializeX(ar);; } ar >> m_iInitialTickCount; ar >> iReserved; VASSERT(iReserved==0); //SetClothPosition(vPos); SetClothOrientation(vOri.getAsVec3 ()); ResetForces(); //SetRelativeLightGridSamplePos(vLGRelPos); m_iRemainingInitialTicks = m_iInitialTickCount; RunInitialTicks(); } else
void VSequenceSet::SerializeX( VArchive &ar ) { char iLocalVersion = TRANSITION_TABLE_VERSION_CURRENT; VASSERT(m_pTransitionTable); if (ar.IsLoading()) { ar >> iLocalVersion; VASSERT(iLocalVersion <= TRANSITION_TABLE_VERSION_CURRENT); // Read animation filename char szFilename[1024]; ar.ReadStringBinary(szFilename, 1024); m_szFilename = vStrDup(szFilename); char szFilepath[FS_MAX_PATH]; char szFullAnimFilePath[FS_MAX_PATH]; if (iLocalVersion >= TRANSITION_TABLE_VERSION_2) // Load anim files from the same folder as the transition file if(m_pTransitionTable->GetFilename()) VFileHelper::GetFileDir(m_pTransitionTable->GetFilename(), szFilepath); else VFileHelper::GetFileDir(m_pTransitionTable->GetMesh()->GetFilename(), szFilepath); else if (iLocalVersion <= TRANSITION_TABLE_VERSION_1) // Load anim files from the same folder as the model file VFileHelper::GetFileDir(m_pTransitionTable->GetMesh()->GetFilename(), szFilepath); // Set the filename VFileHelper::CombineDirAndFile(szFullAnimFilePath, szFilepath, m_szFilename); // Read loaded state ar >> m_bLoaded; // Load sequence set when specified if (m_bLoaded) Load(m_pTransitionTable->GetMesh(), szFullAnimFilePath); }