From 5eb1ba3bcc3983f936ef1d0a7701f19152d0dd81 Mon Sep 17 00:00:00 2001 From: Mat Date: Mon, 30 Mar 2020 22:35:37 +0300 Subject: Lua API for spectating entities (#4518) --- src/Entities/Player.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'src/Entities/Player.cpp') diff --git a/src/Entities/Player.cpp b/src/Entities/Player.cpp index 396069f0a..8876566da 100644 --- a/src/Entities/Player.cpp +++ b/src/Entities/Player.cpp @@ -1703,6 +1703,23 @@ void cPlayer::SendRotation(double a_YawDegrees, double a_PitchDegrees) +void cPlayer::SpectateEntity(cEntity * a_Target) +{ + if ((a_Target == nullptr) || (static_cast(this) == a_Target)) + { + GetClientHandle()->SendCameraSetTo(*this); + m_AttachedTo = nullptr; + return; + } + + m_AttachedTo = a_Target; + GetClientHandle()->SendCameraSetTo(*m_AttachedTo); +} + + + + + Vector3d cPlayer::GetThrowStartPos(void) const { Vector3d res = GetEyePosition(); @@ -2838,8 +2855,7 @@ void cPlayer::AttachTo(cEntity * a_AttachTo) // Different attach, if this is a spectator if (IsGameModeSpectator()) { - m_AttachedTo = a_AttachTo; - GetClientHandle()->SendCameraSetTo(*m_AttachedTo); + SpectateEntity(a_AttachTo); return; } -- cgit v1.2.3