2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-09 19:47:43 +00:00

CActorContraption fixes, better CMake dependency handling

This commit is contained in:
Jack Andersen
2019-06-11 16:05:17 -10:00
parent 77d0ef942d
commit e218b8aeb5
295 changed files with 942 additions and 2219 deletions

View File

@@ -59,7 +59,7 @@ struct CFinalInput {
bool x2e_b30_PDPLeft : 1;
bool x2e_b31_PStart : 1;
rstl::optional<CKeyboardMouseControllerData> m_kbm;
std::optional<CKeyboardMouseControllerData> m_kbm;
bool m_PCharKeys[256] = {};
bool m_PSpecialKeys[26] = {};
@@ -163,7 +163,7 @@ struct CFinalInput {
bool ASpecialKey(boo::ESpecialKey k) const { return DSpecialKey(k) ? 1.f : 0.f; }
bool AMouseButton(boo::EMouseButton k) const { return DMouseButton(k) ? 1.f : 0.f; }
const rstl::optional<CKeyboardMouseControllerData>& GetKBM() const { return m_kbm; }
const std::optional<CKeyboardMouseControllerData>& GetKBM() const { return m_kbm; }
};
} // namespace urde

View File

@@ -258,6 +258,8 @@ static float KBToWASDX(const CKeyboardMouseControllerData& data) {
retval -= 1.0;
if (data.m_charKeys[int('d')])
retval += 1.0;
if (data.m_charKeys[int('w')] ^ data.m_charKeys[int('s')])
retval *= 0.555f;
return retval;
}
@@ -267,6 +269,8 @@ static float KBToWASDY(const CKeyboardMouseControllerData& data) {
retval -= 1.0;
if (data.m_charKeys[int('w')])
retval += 1.0;
if (data.m_charKeys[int('a')] ^ data.m_charKeys[int('d')])
retval *= 0.555f;
return retval;
}
@@ -303,27 +307,27 @@ float ControlMapper::GetAnalogInput(ECommands cmd, const CFinalInput& input) {
case ECommands::LookDown:
case ECommands::OrbitUp:
case ECommands::MapCircleDown:
ret = std::max(ret, KBToWASDY(*kbm) * input.m_leftMul);
ret = std::max(ret, zeus::clamp(-1.f, KBToWASDY(*kbm) * input.m_leftMul, 1.f));
break;
case ECommands::Backward:
case ECommands::LookUp:
case ECommands::OrbitDown:
case ECommands::MapCircleUp:
ret = std::max(ret, -KBToWASDY(*kbm) * input.m_leftMul);
ret = std::max(ret, zeus::clamp(-1.f, -KBToWASDY(*kbm) * input.m_leftMul, 1.f));
break;
case ECommands::TurnLeft:
case ECommands::StrafeLeft:
case ECommands::LookLeft:
case ECommands::OrbitLeft:
case ECommands::MapCircleLeft:
ret = std::max(ret, -KBToWASDX(*kbm) * input.m_leftMul);
ret = std::max(ret, zeus::clamp(-1.f, -KBToWASDX(*kbm) * input.m_leftMul, 1.f));
break;
case ECommands::TurnRight:
case ECommands::StrafeRight:
case ECommands::LookRight:
case ECommands::OrbitRight:
case ECommands::MapCircleRight:
ret = std::max(ret, KBToWASDX(*kbm) * input.m_leftMul);
ret = std::max(ret, zeus::clamp(-1.f, KBToWASDX(*kbm) * input.m_leftMul, 1.f));
break;
case ECommands::MapMoveForward:
ret = std::max(ret, KBToArrowsY(*kbm));