Exemplo n.º 1
0
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();
}
Exemplo n.º 2
0
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);
	}
}
Exemplo n.º 3
0
void NetClient::Disconnect()
{
	DeleteModels(true);

	NetConnection* connection = _connection;
	_connection = NULL;

	//lsl::SafeDelete(connection);

	if (connection)
	{
		connection->Close();
		_net->ReleaseConnection(connection);
	}
	connection = NULL;

	channel()->Unbind();
}
Exemplo n.º 4
0
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;
}