void PlayerUIDialog::RequestMove(RPG_Character* characterEntity, bool spawnDestinationEffect) { VASSERT(characterEntity); hkVector4 hitPoint, characterPos; RPG_VisionHavokConversion::VisionToHavokPoint(characterEntity->GetPosition(), characterPos); if(GetClosestPointOnNavMeshUnderCursor(hitPoint, characterPos)) { hkvVec3 vHitPoint; RPG_VisionHavokConversion::HavokToVisionPoint(hitPoint, vHitPoint); characterEntity->GetActionHandler().PerformAction(AT_Move, false, NULL, vHitPoint); if(spawnDestinationEffect) TrySpawnSelectDestinationEffect(vHitPoint); #ifdef _DEBUG if (m_debugUI) { Vision::Message.DrawMessage3D("RequestPath", vHitPoint); } #endif } }
void PlayerUIDialog::OnTick(float deltaTime) { VDialog::OnTick(deltaTime); #if defined (SUPPORTS_MULTITOUCH) && (HAVOK_VISION_RESTRUCTURING) && !defined(_VISION_ANDROID) if (m_touchInput != NULL) { int count = m_touchInput->GetNumberOfTouchPoints(); if (count > 1) return; } #endif RPG_Character *characterEntity = static_cast<RPG_Character *>(m_playerController->GetOwner()); if (!characterEntity) { // @todo: handle player death properly hkvLog::Warning("Player character has probably died, which isn't yet handled. Set the character's Unlimited Health entity property to true to prevent this."); return; } RPG_PlayerControllerInput input; { if(m_inputMap->GetTrigger(PI_PrimaryAction) > 0.0f) { if(m_inputMap->GetTrigger(PI_ShiftModifier) > 0.0f) { input.m_buttons |= RPG_PlayerControllerInput::B_RANGED; } else if(m_inputMap->GetTrigger(PI_SecondaryShiftModifier) > 0.0f) { input.m_buttons |= RPG_PlayerControllerInput::B_POWER; } else { input.m_buttons |= RPG_PlayerControllerInput::B_PRIMARY; } } if(m_inputMap->GetTrigger(PI_SecondaryAction) > 0.0f) { input.m_buttons |= RPG_PlayerControllerInput::B_POWER; } if(m_inputMap->GetTrigger(PI_SpecialAction01) > 0.0f) { input.m_buttons |= RPG_PlayerControllerInput::B_AOE; } GetFirstAttackableEntityUnderCursor(input.m_targetEntity, input.m_targetPoint, characterEntity); if(!input.m_targetEntity) { hkVector4 hitPoint, characterPos; RPG_VisionHavokConversion::VisionToHavokPoint(characterEntity->GetPosition(), characterPos); if(GetClosestPointOnNavMeshUnderCursor(hitPoint, characterPos)) { RPG_VisionHavokConversion::HavokToVisionPoint(hitPoint, input.m_targetPoint); } } m_playerController->SetInput(input); } RPG_GuiManager::GetInstance()->OnTick(deltaTime); }