Skip to content

Commit dfe4eb3

Browse files
committed
scale fix first attempt
1 parent 6e57175 commit dfe4eb3

File tree

1 file changed

+59
-19
lines changed

1 file changed

+59
-19
lines changed

EXILED/Exiled.API/Features/Player.cs

Lines changed: 59 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -693,8 +693,8 @@ public ScpSpawnPreferences.SpawnPreferences ScpPreferences
693693
/// </summary>
694694
public Vector3 Scale
695695
{
696-
get => ReferenceHub.transform.localScale;
697-
set => SetScale(value, List);
696+
get => Role is FpcRole fpcRole ? fpcRole.FirstPersonController.FpcModule.Motor.ScaleController.Scale : Vector3.one;
697+
set => SetScale(value);
698698
}
699699

700700
/// <summary>
@@ -2064,18 +2064,52 @@ public void Disconnect(string reason = null) =>
20642064
/// Sets the scale of a player on the server side.
20652065
/// </summary>
20662066
/// <param name="scale">The scale to set.</param>
2067-
/// <param name="viewers">Who should see the updated scale.</param>
2068-
public void SetScale(Vector3 scale, IEnumerable<Player> viewers)
2067+
public void SetScale(Vector3 scale)
20692068
{
2070-
if (scale == Scale)
2071-
return;
2069+
try
2070+
{
2071+
if (Role is not FpcRole fpcRole)
2072+
{
2073+
Log.Error($"{nameof(SetScale)} error: {nameof(Role)} {Role} is not a {nameof(FpcRole)}, cannot set scale.");
2074+
return;
2075+
}
20722076

2077+
fpcRole.FirstPersonController.FpcModule.Motor.ScaleController.Scale = scale;
2078+
}
2079+
catch (Exception exception)
2080+
{
2081+
Log.Error($"{nameof(SetScale)} error: {exception}");
2082+
}
2083+
}
2084+
2085+
/// <summary>
2086+
/// Sets the scale of a player on the server side.
2087+
/// </summary>
2088+
/// <param name="scale">The scale to set.</param>
2089+
/// <param name="viewers">Who should see the updated scale.</param>
2090+
public void SetScale(Vector3 scale, IEnumerable<Player> viewers) => SetScale(scale, viewers.Select(p => p.ReferenceHub));
2091+
2092+
/// <summary>
2093+
/// Sets the scale of a player on the server side.
2094+
/// </summary>
2095+
/// <param name="scale">The scale to set.</param>
2096+
/// <param name="viewers">Who should see the updated scale.</param>
2097+
public void SetScale(Vector3 scale, IEnumerable<ReferenceHub> viewers)
2098+
{
20732099
try
20742100
{
2075-
ReferenceHub.transform.localScale = scale;
2101+
if (Role is not FpcRole fpcRole)
2102+
{
2103+
Log.Error($"{nameof(SetScale)} error: {nameof(Role)} {Role} is not a {nameof(FpcRole)}, cannot set scale.");
2104+
return;
2105+
}
2106+
2107+
if (fpcRole.FirstPersonController.FpcModule.Motor.ScaleController.Scale == scale)
2108+
return;
20762109

2077-
foreach (Player target in viewers)
2078-
Server.SendSpawnMessage?.Invoke(null, new object[] { NetworkIdentity, target.Connection });
2110+
fpcRole.FirstPersonController.FpcModule.Motor.ScaleController._scale = scale;
2111+
ReferenceHub.transform.localScale = scale;
2112+
new SyncedScaleMessages.ScaleMessage(scale, ReferenceHub).SendToHubsConditionally(h => viewers.Contains(h));
20792113
}
20802114
catch (Exception exception)
20812115
{
@@ -2088,22 +2122,28 @@ public void SetScale(Vector3 scale, IEnumerable<Player> viewers)
20882122
/// </summary>
20892123
/// <param name="fakeScale">The scale to set to.</param>
20902124
/// <param name="viewers">Who should see the fake scale.</param>
2091-
public void SetFakeScale(Vector3 fakeScale, IEnumerable<Player> viewers)
2092-
{
2093-
Vector3 currentScale = Scale;
2125+
public void SetFakeScale(Vector3 fakeScale, IEnumerable<Player> viewers) => SetFakeScale(fakeScale, viewers.Select(p => p.ReferenceHub));
20942126

2127+
/// <summary>
2128+
/// Sets the scale of the player for other players.
2129+
/// </summary>
2130+
/// <param name="fakeScale">The scale to set to.</param>
2131+
/// <param name="viewers">Who should see the fake scale.</param>
2132+
public void SetFakeScale(Vector3 fakeScale, IEnumerable<ReferenceHub> viewers)
2133+
{
20952134
try
20962135
{
2097-
ReferenceHub.transform.localScale = fakeScale;
2098-
2099-
foreach (Player target in viewers)
2100-
Server.SendSpawnMessage.Invoke(null, new object[] { NetworkIdentity, target.Connection });
2136+
if (Role is not FpcRole fpcRole)
2137+
{
2138+
Log.Error($"{nameof(SetFakeScale)} error: {nameof(Role)} {Role} is not a {nameof(FpcRole)}, cannot set fake scale.");
2139+
return;
2140+
}
21012141

2102-
ReferenceHub.transform.localScale = currentScale;
2142+
new SyncedScaleMessages.ScaleMessage(fakeScale, ReferenceHub).SendToHubsConditionally(h => viewers.Contains(h));
21032143
}
2104-
catch (Exception ex)
2144+
catch (Exception exception)
21052145
{
2106-
Log.Error($"{nameof(SetFakeScale)}: {ex}");
2146+
Log.Error($"{nameof(SetFakeScale)} error: {exception}");
21072147
}
21082148
}
21092149

0 commit comments

Comments
 (0)