void MergedModelFactory_cl::PreviewModel() { DeleteModels(); m_pPreviewModelEntities = new VisBaseEntity_cl*[BARBARIAN_MAX]; m_pPreviewModelEntities[BARBARIAN_BODY] = Vision::Game.CreateEntity("VisBaseEntity_cl", hkvVec3(0.f, 0.f, 0.f), "Barbarian_Body.model"); m_pPreviewModelEntities[BARBARIAN_ARM] = Vision::Game.CreateEntity("VisBaseEntity_cl", hkvVec3(0.f, 0.f, 0.f), "Barbarian_Arm.model"); m_pPreviewModelEntities[BARBARIAN_SHOULDER] = Vision::Game.CreateEntity("VisBaseEntity_cl", hkvVec3(0.f, 0.f, 0.f), "Barbarian_Shoulder.model"); m_pPreviewModelEntities[BARBARIAN_LEGS] = Vision::Game.CreateEntity("VisBaseEntity_cl", hkvVec3(0.f, 0.f, 0.f), "Barbarian_Legs.model"); m_pPreviewModelEntities[BARBARIAN_KNEE] = Vision::Game.CreateEntity("VisBaseEntity_cl", hkvVec3(0.f, 0.f, 0.f), "Barbarian_Knee.model"); m_pPreviewModelEntities[BARBARIAN_ACCESSOIRE] = Vision::Game.CreateEntity("VisBaseEntity_cl", hkvVec3(0.f, 0.f, 0.f), "Barbarian_Accessoire.model"); m_pPreviewModelEntities[BARBARIAN_BELT] = Vision::Game.CreateEntity("VisBaseEntity_cl", hkvVec3(0.f, 0.f, 0.f), "Barbarian_Belt.model"); m_pPreviewModelEntities[BARBARIAN_CLOTH] = Vision::Game.CreateEntity("VisBaseEntity_cl", hkvVec3(0.f, 0.f, 0.f), "Barbarian_Cloth.model"); m_pPreviewModelEntities[BARBARIAN_BEARD] = Vision::Game.CreateEntity("VisBaseEntity_cl", hkvVec3(0.f, 0.f, 0.f), "Barbarian_Beard.model"); m_pPreviewModelEntities[BARBARIAN_AXE] = Vision::Game.CreateEntity("VisBaseEntity_cl", hkvVec3(0.f, 0.f, 0.f), "Barbarian_Axe.model"); m_pPreviewModelEntities[BARBARIAN_SWORD] = Vision::Game.CreateEntity("VisBaseEntity_cl", hkvVec3(0.f, 0.f, 0.f), "Barbarian_Sword.model"); // Setup animation system VDynamicMesh* pBodyMesh = m_pPreviewModelEntities[BARBARIAN_BODY]->GetMesh(); VisSkeletalAnimSequence_cl* pSequence = static_cast<VisSkeletalAnimSequence_cl*>(pBodyMesh->GetSequence("Idle", VIS_MODELANIM_SKELETAL)); // Create shared skeletal anim control to animate all models in sync VisSkeletalAnimControl_cl* pSkeletalAnimControl = VisSkeletalAnimControl_cl::Create(pBodyMesh->GetSkeleton(), pSequence, VSKELANIMCTRL_DEFAULTS | VANIMCTRL_LOOP); for (int i = 0; i < BARBARIAN_MAX; i++) { // Create anim config per entity VisAnimFinalSkeletalResult_cl* pFinalSkeletalResult = NULL; VisAnimConfig_cl* pConfig = VisAnimConfig_cl::CreateSkeletalConfig(m_pPreviewModelEntities[i]->GetMesh(), &pFinalSkeletalResult); pConfig->SetFlags(pConfig->GetFlags() | APPLY_MOTION_DELTA); // Anim config uses shared skeletal anim control as input pFinalSkeletalResult->SetSkeletalAnimInput(pSkeletalAnimControl); m_pPreviewModelEntities[i]->SetAnimConfig(pConfig); m_pPreviewModelEntities[i]->SetPosition(m_vPos); m_pPreviewModelEntities[i]->SetOrientation(m_vOri); #ifndef _VISION_PSP2 m_pPreviewModelEntities[i]->SetCastShadows(TRUE); #endif } m_pCameraEntity->AttachToParent(m_pPreviewModelEntities[BARBARIAN_BODY]); m_pPlayerCamera->ResetOldPosition(); m_pPlayerCamera->Follow = true; m_pPlayerCamera->Zoom = false; m_pPlayerCamera->InitialYaw = -90.f; UpdatePreview(); }
void CInv3DDoc::OnModelInvert() { CDlgInvert dlg; dlg.m_pInvFcs = &m_inv; dlg.DoModal(); if( m_inv.IsForwardModel() ) { if(m_nModels>1) DeleteModels(1, m_nModels-1); ImportModel(m_inv.GetFilePathInv(), TRUE); } }
void NetClient::Disconnect() { DeleteModels(true); NetConnection* connection = _connection; _connection = NULL; //lsl::SafeDelete(connection); if (connection) { connection->Close(); _net->ReleaseConnection(connection); } connection = NULL; channel()->Unbind(); }
void MergedModelFactory_cl::MergeModel() { VASSERT(m_iModelsToMerge > 1 && m_iModelsToMerge < 11); DeleteModels(); // Always use the body MeshMergeInfo_t info[32]; // maximum count info[0].m_pMesh = Vision::Game.LoadDynamicMesh("Barbarian_Body.model", true); int i = 1; // Armor if (m_bArmArmor) info[i++].m_pMesh = Vision::Game.LoadDynamicMesh("Barbarian_Arm.model", true); if (m_bShoulderArmor) info[i++].m_pMesh = Vision::Game.LoadDynamicMesh("Barbarian_Shoulder.model", true); if (m_bLegsArmor) info[i++].m_pMesh = Vision::Game.LoadDynamicMesh("Barbarian_Legs.model", true); if (m_bKneeArmor) info[i++].m_pMesh = Vision::Game.LoadDynamicMesh("Barbarian_Knee.model", true); if (m_bAccessoire) info[i++].m_pMesh = Vision::Game.LoadDynamicMesh("Barbarian_Accessoire.model", true); if (m_bBelt) info[i++].m_pMesh = Vision::Game.LoadDynamicMesh("Barbarian_Belt.model", true); if (m_bCloth) info[i++].m_pMesh = Vision::Game.LoadDynamicMesh("Barbarian_Cloth.model", true); if (m_bBeard) info[i++].m_pMesh = Vision::Game.LoadDynamicMesh("Barbarian_Beard.model", true); // Weapon if (m_bAxe) info[i++].m_pMesh = Vision::Game.LoadDynamicMesh("Barbarian_Axe.model", true); else info[i++].m_pMesh = Vision::Game.LoadDynamicMesh("Barbarian_Sword.model", true); // Setup model m_pMergedModelEntity = (KeyControlledTransitionBarbarian_cl *) Vision::Game.CreateEntity("KeyControlledTransitionBarbarian_cl", m_vPos, "Barbarian_Body.model"); if (m_iModelsToMerge > 1) { // Merge model VMeshManager &modelManager(VDynamicMesh::GetResourceManager()); VDynamicMesh *pMergedModel = modelManager.MergeDynamicMeshes("MergedModel", info, m_iModelsToMerge); VTransitionStateMachine* pTransitionStateMachine = m_pMergedModelEntity->Components().GetComponentOfType<VTransitionStateMachine>(); if(pTransitionStateMachine != NULL) m_pMergedModelEntity->RemoveComponent(pTransitionStateMachine); m_pMergedModelEntity->SetMesh(pMergedModel); // Load sequence set VisAnimSequenceSet_cl *pSet = Vision::Animations.GetSequenceSetManager()->LoadAnimSequenceSet("Barbarian_Body.anim"); m_pMergedModelEntity->GetMesh()->GetSequenceSetCollection()->Add(pSet); if(pTransitionStateMachine != NULL) m_pMergedModelEntity->AddComponent(pTransitionStateMachine); } // Init entity m_pMergedModelEntity->InitFunction(); m_pMergedModelEntity->SetPosition(m_vPos); m_pMergedModelEntity->SetOrientation(m_vOri); m_pCameraEntity->AttachToParent(m_pMergedModelEntity); m_pPlayerCamera->ResetOldPosition(); m_pPlayerCamera->Follow = false; m_pPlayerCamera->Zoom = true; }