1
0
Fork 0

Lua API for spectating entities (#4518)

This commit is contained in:
Mat 2020-03-30 22:35:37 +03:00 committed by GitHub
parent c04ba834d1
commit 5eb1ba3bcc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 2 deletions

View File

@ -11132,6 +11132,17 @@ a_Player:OpenWindow(Window);
},
Notes = "Sets the player visibility to other players",
},
SpectateEntity =
{
Params =
{
{
Name = "Target",
Type = "cEntity",
},
},
Notes = "Spectates the target entity. Does not change the player's gamemode to spectator mode. When called with self or nil as the target, resets the spectation.",
},
TossEquippedItem =
{
Params =

View File

@ -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<cEntity *>(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;
}

View File

@ -166,6 +166,9 @@ public:
*/
void SendRotation(double a_YawDegrees, double a_PitchDegrees);
/** Spectates the target entity. If a_Target is nullptr or a pointer to self, end spectation. */
void SpectateEntity(cEntity * a_Target);
/** Returns the position where projectiles thrown by this player should start, player eye position + adjustment */
Vector3d GetThrowStartPos(void) const;