コード例 #1
0
ファイル: VCameraHandling.cpp プロジェクト: Superdenny/peggle
void VCameraHandling::OnHandleCallback(IVisCallbackDataObject_cl* pData)
{
  if (pData->m_pSender == &Vision::Callbacks.OnAfterSceneLoaded)
  {
    BuildCameraList();
    InitFreeCamera();
  }
  else if (pData->m_pSender == &Vision::Callbacks.OnBeforeSceneUnloaded)
  {
    DeInitFreeCamera();
    ReleaseCameraList();
  }
  else
  {
    const int iActionIndex = GetCallbackIndex(pData);
    if (iActionIndex < 0)
      return;

    if (iActionIndex == m_iWASDActionIndex)
    {
      SetWASDControlsEnabled(!m_bWASDEnabled);
    }
    else
    {
      ActivateCameraByActionIndex(iActionIndex);
    }
  }
}
コード例 #2
0
ファイル: VCameraHandling.cpp プロジェクト: Superdenny/peggle
void VCameraHandling::InitFreeCamera()
{
  // Store free camera that was found in the scene.
  VFreeCamera* pFreeCameraInScene = m_spFreeCamera;

  // Create own free camera.
  // Do not call InitFunction yet. We want to disable the ThinkFunctionStatus first.
  VisEntityTemplate_cl initTemplate;
  initTemplate.m_pszClassName = "VFreeCamera";
  initTemplate.m_bCallInitFunction = false;
  m_spFreeCamera = vstatic_cast<VFreeCamera*>(Vision::Game.CreateEntity(initTemplate));

  m_spFreeCamera->SetThinkFunctionStatus(FALSE);
  m_spFreeCamera->SetObjectFlag(VObjectFlag_AutoDispose);
  m_spFreeCamera->InitFunction(); // Call InitFunction only now.

  // Apply WASD setting to all free cameras.
  SetWASDControlsEnabled(m_bWASDEnabled);

  // Check if there are orbit or path cameras.
  bool bHasOrbitOrPathCamera = false;

  for (VPOSITION it = m_actionMap.GetStartPosition(); it != NULL;)
  {
    int iActionIndex;
    EntityAccessor entity;
    m_actionMap.GetNextPair(it, iActionIndex, entity);

    VASSERT(entity.IsValid());
    if (entity.GetComponentOfBaseType<VOrbitCamera>() != NULL || 
      entity.GetAs<PathCameraEntity>() != NULL)
    {
      bHasOrbitOrPathCamera = true;
      break;
    }
  }

  // Fall back to default camera transformation if there are no active cameras.
  if (!bHasOrbitOrPathCamera && pFreeCameraInScene == NULL)
  {
    DeactivateAllCameras();

    m_spFreeCamera->SetPosition(GetParent()->GetSceneLoader().m_vDefaultCamPos);
    m_spFreeCamera->SetRotationMatrix(GetParent()->GetSceneLoader().m_DefaultCamRot);

    m_spFreeCamera->SetThinkFunctionStatus(TRUE);
  }
}
コード例 #3
0
void VFreeCamera::BaseInit()
{
  m_pInputMap = new VInputMap(CONTROL_LAST_ELEMENT + 1 + CAMERA_CONTROL_USER_SPACE, CAMERA_CONTROL_ALTERNATIVES);

#if defined(_VISION_XENON)

  m_pInputMap->MapTrigger(CONTROL_MOVE_FORWARD,  VInputManagerXenon::GetPad(0), CT_PAD_LEFT_THUMB_STICK_UP,    VInputOptions::DeadZone(0.25f));
  m_pInputMap->MapTrigger(CONTROL_MOVE_BACKWARD, VInputManagerXenon::GetPad(0), CT_PAD_LEFT_THUMB_STICK_DOWN,  VInputOptions::DeadZone(0.25f));
  m_pInputMap->MapTrigger(CONTROL_MOVE_LEFT,     VInputManagerXenon::GetPad(0), CT_PAD_LEFT_THUMB_STICK_LEFT,  VInputOptions::DeadZone(0.25f));
  m_pInputMap->MapTrigger(CONTROL_MOVE_RIGHT,    VInputManagerXenon::GetPad(0), CT_PAD_LEFT_THUMB_STICK_RIGHT, VInputOptions::DeadZone(0.25f));

  m_pInputMap->MapTrigger(CONTROL_ANY_ACTION,   VInputManagerXenon::GetPad(0), CT_PAD_ANY_KEY);
  m_pInputMap->MapTrigger(CONTROL_ANY_ACTION,   VInputManagerXenon::GetPad(0), CT_PAD_LEFT_THUMB_STICK_CHANGED);

  m_pInputMap->MapTriggerAxis(CONTROL_HORIZONTAL_LOOK, VInputManagerXenon::GetPad(0), CT_PAD_RIGHT_THUMB_STICK_LEFT, CT_PAD_RIGHT_THUMB_STICK_RIGHT, VInputOptions::DeadZone(0.15f, true));
  m_pInputMap->MapTriggerAxis(CONTROL_VERTICAL_LOOK,   VInputManagerXenon::GetPad(0), CT_PAD_RIGHT_THUMB_STICK_UP,   CT_PAD_RIGHT_THUMB_STICK_DOWN,  VInputOptions::DeadZone(0.15f, true));

  m_pInputMap->MapTrigger(CONTROL_SPEED_FAST, VInputManagerXenon::GetPad(0), CT_PAD_RIGHT_SHOULDER, VInputOptions::DeadZone(0.25f));
  m_pInputMap->MapTrigger(CONTROL_SPEED_FASTER, VInputManagerXenon::GetPad(0), CT_PAD_RIGHT_THUMB);

#endif

#if defined(_VISION_PS3)
  
  m_pInputMap->MapTrigger(CONTROL_MOVE_FORWARD,  VInputManagerPS3::GetPad(0), CT_PAD_LEFT_THUMB_STICK_UP,    VInputOptions::DeadZone(0.25f));
  m_pInputMap->MapTrigger(CONTROL_MOVE_BACKWARD, VInputManagerPS3::GetPad(0), CT_PAD_LEFT_THUMB_STICK_DOWN,  VInputOptions::DeadZone(0.25f));
  m_pInputMap->MapTrigger(CONTROL_MOVE_LEFT,     VInputManagerPS3::GetPad(0), CT_PAD_LEFT_THUMB_STICK_LEFT,  VInputOptions::DeadZone(0.25f));
  m_pInputMap->MapTrigger(CONTROL_MOVE_RIGHT,    VInputManagerPS3::GetPad(0), CT_PAD_LEFT_THUMB_STICK_RIGHT, VInputOptions::DeadZone(0.25f));

  m_pInputMap->MapTrigger(CONTROL_ANY_ACTION,    VInputManagerPS3::GetPad(0), CT_PAD_ANY_KEY);
  m_pInputMap->MapTrigger(CONTROL_ANY_ACTION,    VInputManagerPS3::GetPad(0), CT_PAD_LEFT_THUMB_STICK_CHANGED);
  m_pInputMap->MapTrigger(CONTROL_ANY_ACTION,    VInputManagerPS3::GetPad(0), CT_PAD_RIGHT_THUMB_STICK_CHANGED);

  m_pInputMap->MapTriggerAxis(CONTROL_HORIZONTAL_LOOK, VInputManagerPS3::GetPad(0), CT_PAD_RIGHT_THUMB_STICK_LEFT, CT_PAD_RIGHT_THUMB_STICK_RIGHT, VInputOptions::DeadZone(0.15f, true));
  m_pInputMap->MapTriggerAxis(CONTROL_VERTICAL_LOOK,   VInputManagerPS3::GetPad(0), CT_PAD_RIGHT_THUMB_STICK_UP,   CT_PAD_RIGHT_THUMB_STICK_DOWN,  VInputOptions::DeadZone(0.15f, true));

  m_pInputMap->MapTrigger(CONTROL_SPEED_FAST, VInputManagerPS3::GetPad(0), CT_PAD_RIGHT_SHOULDER, VInputOptions::DeadZone(0.25f));
  m_pInputMap->MapTrigger(CONTROL_SPEED_FASTER, VInputManagerPS3::GetPad(0), CT_PAD_RIGHT_THUMB);

#endif

#if defined(_VISION_PSP2)

  m_pInputMap->MapTrigger(CONTROL_MOVE_FORWARD,  VInputManagerPSP2::GetPad(0), CT_PAD_LEFT_THUMB_STICK_UP, VInputOptions::DeadZone(0.25f));
  m_pInputMap->MapTrigger(CONTROL_MOVE_BACKWARD, VInputManagerPSP2::GetPad(0), CT_PAD_LEFT_THUMB_STICK_DOWN, VInputOptions::DeadZone(0.25f));
  m_pInputMap->MapTrigger(CONTROL_MOVE_LEFT,     VInputManagerPSP2::GetPad(0), CT_PAD_LEFT_THUMB_STICK_LEFT, VInputOptions::DeadZone(0.25f));
  m_pInputMap->MapTrigger(CONTROL_MOVE_RIGHT,    VInputManagerPSP2::GetPad(0), CT_PAD_LEFT_THUMB_STICK_RIGHT, VInputOptions::DeadZone(0.25f));

  m_pInputMap->MapTrigger(CONTROL_ANY_ACTION,    VInputManagerPSP2::GetPad(0), CT_PAD_ANY_KEY);
  m_pInputMap->MapTrigger(CONTROL_ANY_ACTION,    VInputManagerPSP2::GetPad(0), CT_PAD_LEFT_THUMB_STICK_CHANGED);
  m_pInputMap->MapTrigger(CONTROL_ANY_ACTION,    VInputManagerPSP2::GetPad(0), CT_PAD_RIGHT_THUMB_STICK_CHANGED);

  m_pInputMap->MapTriggerAxis(CONTROL_HORIZONTAL_LOOK, VInputManagerPSP2::GetPad(0), CT_PAD_RIGHT_THUMB_STICK_LEFT, CT_PAD_RIGHT_THUMB_STICK_RIGHT, VInputOptions::DeadZone(0.15f, true));
  m_pInputMap->MapTriggerAxis(CONTROL_VERTICAL_LOOK,   VInputManagerPSP2::GetPad(0), CT_PAD_RIGHT_THUMB_STICK_UP,   CT_PAD_RIGHT_THUMB_STICK_DOWN,  VInputOptions::DeadZone(0.15f, true));

  m_pInputMap->MapTrigger(CONTROL_SPEED_FASTER,   VInputManagerPSP2::GetPad(0), CT_PAD_RIGHT_SHOULDER, VInputOptions::DeadZone(0.25f));

#endif

#if defined(SUPPORTS_KEYBOARD)

  m_pInputMap->MapTrigger(CONTROL_MOVE_FORWARD,  V_KEYBOARD, CT_KB_UP);
  m_pInputMap->MapTrigger(CONTROL_MOVE_BACKWARD, V_KEYBOARD, CT_KB_DOWN);
  m_pInputMap->MapTrigger(CONTROL_MOVE_LEFT,     V_KEYBOARD, CT_KB_LEFT);
  m_pInputMap->MapTrigger(CONTROL_MOVE_RIGHT,    V_KEYBOARD, CT_KB_RIGHT);

  m_pInputMap->MapTrigger(CONTROL_ANY_ACTION,    V_KEYBOARD, CT_KB_UNKNOWN);

#endif

#if defined(SUPPORTS_MOUSE)
  
  m_pInputMap->MapTrigger(CONTROL_HORIZONTAL_LOOK, V_MOUSE, CT_MOUSE_ABS_DELTA_X, VInputOptions::Sensitivity(0.15f / Vision::Video.GetDeviceDpi()));
  m_pInputMap->MapTrigger(CONTROL_VERTICAL_LOOK,   V_MOUSE, CT_MOUSE_ABS_DELTA_Y, VInputOptions::Sensitivity(0.15f / Vision::Video.GetDeviceDpi()));

  m_pInputMap->MapTrigger(CONTROL_SPEED_FAST, V_MOUSE, CT_MOUSE_RIGHT_BUTTON);
  m_pInputMap->MapTrigger(CONTROL_SPEED_FASTER, V_MOUSE, CT_MOUSE_MIDDLE_BUTTON);
#endif

#if defined(_VISION_WIIU)

  // DRC mapping
  m_pInputMap->MapTrigger(CONTROL_MOVE_FORWARD,  VInputManagerWiiU::GetDRC(V_DRC_FIRST), CT_PAD_LEFT_THUMB_STICK_UP,    VInputOptions::DeadZone(0.25f));
  m_pInputMap->MapTrigger(CONTROL_MOVE_BACKWARD, VInputManagerWiiU::GetDRC(V_DRC_FIRST), CT_PAD_LEFT_THUMB_STICK_DOWN,  VInputOptions::DeadZone(0.25f));
  m_pInputMap->MapTrigger(CONTROL_MOVE_LEFT,     VInputManagerWiiU::GetDRC(V_DRC_FIRST), CT_PAD_LEFT_THUMB_STICK_LEFT,  VInputOptions::DeadZone(0.25f));
  m_pInputMap->MapTrigger(CONTROL_MOVE_RIGHT,    VInputManagerWiiU::GetDRC(V_DRC_FIRST), CT_PAD_LEFT_THUMB_STICK_RIGHT, VInputOptions::DeadZone(0.25f));

  m_pInputMap->MapTrigger(CONTROL_ANY_ACTION,    VInputManagerWiiU::GetDRC(V_DRC_FIRST), CT_PAD_ANY_KEY);
  m_pInputMap->MapTrigger(CONTROL_ANY_ACTION,    VInputManagerWiiU::GetDRC(V_DRC_FIRST), CT_PAD_LEFT_THUMB_STICK_CHANGED);
  m_pInputMap->MapTrigger(CONTROL_ANY_ACTION,    VInputManagerWiiU::GetDRC(V_DRC_FIRST), CT_PAD_RIGHT_THUMB_STICK_CHANGED);

  m_pInputMap->MapTriggerAxis(CONTROL_HORIZONTAL_LOOK, VInputManagerWiiU::GetDRC(V_DRC_FIRST), CT_PAD_RIGHT_THUMB_STICK_LEFT, CT_PAD_RIGHT_THUMB_STICK_RIGHT, VInputOptions::DeadZone(0.15f, true));
  m_pInputMap->MapTriggerAxis(CONTROL_VERTICAL_LOOK,   VInputManagerWiiU::GetDRC(V_DRC_FIRST), CT_PAD_RIGHT_THUMB_STICK_UP,   CT_PAD_RIGHT_THUMB_STICK_DOWN,  VInputOptions::DeadZone(0.15f, true));

  m_pInputMap->MapTrigger(CONTROL_SPEED_FAST, VInputManagerWiiU::GetDRC(V_DRC_FIRST), CT_PAD_RIGHT_SHOULDER, VInputOptions::DeadZone(0.25f));
  m_pInputMap->MapTrigger(CONTROL_SPEED_FASTER, VInputManagerWiiU::GetDRC(V_DRC_FIRST), CT_PAD_LEFT_SHOULDER,  VInputOptions::DeadZone(0.4f));

  // Pro controller mapping
  m_pInputMap->MapTrigger(CONTROL_MOVE_FORWARD,  VInputManagerWiiU::GetRemote(0), CT_PAD_LEFT_THUMB_STICK_UP,    VInputOptions::DeadZone(0.25f));
  m_pInputMap->MapTrigger(CONTROL_MOVE_BACKWARD, VInputManagerWiiU::GetRemote(0), CT_PAD_LEFT_THUMB_STICK_DOWN,  VInputOptions::DeadZone(0.25f));
  m_pInputMap->MapTrigger(CONTROL_MOVE_LEFT,     VInputManagerWiiU::GetRemote(0), CT_PAD_LEFT_THUMB_STICK_LEFT,  VInputOptions::DeadZone(0.25f));
  m_pInputMap->MapTrigger(CONTROL_MOVE_RIGHT,    VInputManagerWiiU::GetRemote(0), CT_PAD_LEFT_THUMB_STICK_RIGHT, VInputOptions::DeadZone(0.25f)); 

  m_pInputMap->MapTrigger(CONTROL_ANY_ACTION,    VInputManagerWiiU::GetRemote(0), CT_PAD_ANY_KEY);
  m_pInputMap->MapTrigger(CONTROL_ANY_ACTION,    VInputManagerWiiU::GetRemote(0), CT_PAD_LEFT_THUMB_STICK_CHANGED);
  m_pInputMap->MapTrigger(CONTROL_ANY_ACTION,    VInputManagerWiiU::GetRemote(0), CT_PAD_RIGHT_THUMB_STICK_CHANGED);

  m_pInputMap->MapTriggerAxis(CONTROL_HORIZONTAL_LOOK, VInputManagerWiiU::GetRemote(0), CT_PAD_RIGHT_THUMB_STICK_LEFT, CT_PAD_RIGHT_THUMB_STICK_RIGHT, VInputOptions::DeadZone(0.05f, true));
  m_pInputMap->MapTriggerAxis(CONTROL_VERTICAL_LOOK,   VInputManagerWiiU::GetRemote(0), CT_PAD_RIGHT_THUMB_STICK_UP,   CT_PAD_RIGHT_THUMB_STICK_DOWN,  VInputOptions::DeadZone(0.05f, true));

  m_pInputMap->MapTrigger(CONTROL_SPEED_FAST, VInputManagerWiiU::GetRemote(0), CT_PAD_RIGHT_SHOULDER, VInputOptions::DeadZone(0.1f));
  m_pInputMap->MapTrigger(CONTROL_SPEED_FASTER, VInputManagerWiiU::GetRemote(0), CT_PAD_LEFT_SHOULDER,  VInputOptions::DeadZone(0.2f));

#endif

#if defined(_VISION_ANDROID) 

  // Additional input possibilities for devices with play station buttons
  m_pInputMap->MapTrigger(CONTROL_MOVE_FORWARD,  VInputManagerAndroid::GetKeyInput(), CT_PAD_UP,    VInputOptions::Alternative(1));
  m_pInputMap->MapTrigger(CONTROL_MOVE_BACKWARD, VInputManagerAndroid::GetKeyInput(), CT_PAD_DOWN,  VInputOptions::Alternative(1));
  m_pInputMap->MapTrigger(CONTROL_MOVE_LEFT,     VInputManagerAndroid::GetKeyInput(), CT_PAD_LEFT,  VInputOptions::Alternative(1));
  m_pInputMap->MapTrigger(CONTROL_MOVE_RIGHT,    VInputManagerAndroid::GetKeyInput(), CT_PAD_RIGHT, VInputOptions::Alternative(1));

#endif

#if defined(SUPPORTS_MULTITOUCH) && (defined(_VISION_MOBILE) || defined(_VISION_WINRT))
  VASSERT(m_pVirtualThumbStick == NULL);
  CreateVirtualThumbStick();
#endif

  // WASD is enabled by default.
  SetWASDControlsEnabled(true);

  // Initialize think function status.
  OnThinkFunctionStatusChanged();
}