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);
    }
Example #5
0
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);
  }
Example #6
0
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);
  }