mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-03-31 16:20:45 +00:00
do it!!!
This commit is contained in:
parent
0d4c9bfac2
commit
72956bfe65
QSB
QuantumUNET/Components
@ -56,6 +56,12 @@ namespace QSB.Player
|
||||
|
||||
private void Initialize()
|
||||
{
|
||||
if (_player.Name == null)
|
||||
{
|
||||
DebugLog.ToConsole($"Error - {_player.PlayerId} has a null name!", OWML.Common.MessageType.Error);
|
||||
_player.Name = "NULL";
|
||||
}
|
||||
|
||||
_markerLabel = _player.Name.ToUpper();
|
||||
_needsInitializing = false;
|
||||
_isReady = true;
|
||||
|
@ -1,56 +0,0 @@
|
||||
using QSB.Events;
|
||||
using QSB.SectorSync;
|
||||
using QSB.Syncs.TransformSync;
|
||||
using QSB.Tools;
|
||||
using QSB.Utility;
|
||||
using UnityEngine;
|
||||
|
||||
namespace QSB.Player.TransformSync
|
||||
{
|
||||
public class PlayerCameraSync : SectoredTransformSync
|
||||
{
|
||||
protected override Transform InitLocalTransform()
|
||||
{
|
||||
SectorSync.Init(Locator.GetPlayerSectorDetector(), this);
|
||||
var body = Locator.GetPlayerCamera().gameObject.transform;
|
||||
|
||||
Player.Camera = Locator.GetPlayerCamera();
|
||||
Player.CameraBody = body.gameObject;
|
||||
|
||||
Player.PlayerStates.IsReady = true;
|
||||
QSBEventManager.FireEvent(EventNames.QSBPlayerReady, true);
|
||||
DebugLog.DebugWrite("PlayerCameraSync init done - Request state!");
|
||||
QSBEventManager.FireEvent(EventNames.QSBPlayerStatesRequest);
|
||||
|
||||
return body;
|
||||
}
|
||||
|
||||
protected override Transform InitRemoteTransform()
|
||||
{
|
||||
var body = new GameObject("RemotePlayerCamera");
|
||||
|
||||
PlayerToolsManager.Init(body.transform);
|
||||
|
||||
var camera = body.AddComponent<Camera>();
|
||||
camera.enabled = false;
|
||||
var owcamera = body.AddComponent<OWCamera>();
|
||||
owcamera.fieldOfView = 70;
|
||||
owcamera.nearClipPlane = 0.1f;
|
||||
owcamera.farClipPlane = 50000f;
|
||||
Player.Camera = owcamera;
|
||||
Player.CameraBody = body;
|
||||
|
||||
return body.transform;
|
||||
}
|
||||
|
||||
public override bool IsReady => Locator.GetPlayerTransform() != null
|
||||
&& Player != null
|
||||
&& QSBPlayerManager.PlayerExists(Player.PlayerId)
|
||||
&& NetId.Value != uint.MaxValue
|
||||
&& NetId.Value != 0U;
|
||||
|
||||
public override bool UseInterpolation => true;
|
||||
|
||||
public override TargetType Type => TargetType.PlayerCamera;
|
||||
}
|
||||
}
|
@ -1,7 +1,13 @@
|
||||
using QSB.Animation.Player;
|
||||
using OWML.Utils;
|
||||
using QSB.Animation.Player;
|
||||
using QSB.Events;
|
||||
using QSB.Instruments;
|
||||
using QSB.RoastingSync;
|
||||
using QSB.SectorSync;
|
||||
using QSB.Syncs.TransformSync;
|
||||
using QSB.Tools;
|
||||
using QSB.Utility;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
|
||||
namespace QSB.Player.TransformSync
|
||||
@ -10,6 +16,18 @@ namespace QSB.Player.TransformSync
|
||||
{
|
||||
static PlayerTransformSync() => AnimControllerPatch.Init();
|
||||
|
||||
private Transform _visibleCameraRoot;
|
||||
private Transform _networkCameraRoot => gameObject.transform.GetChild(0);
|
||||
|
||||
private Transform _visibleStickPivot;
|
||||
private Transform _networkStickPivot => gameObject.transform.GetChild(1);
|
||||
|
||||
private Transform _visibleStickTip;
|
||||
private Transform _networkStickTip => _networkStickPivot.GetChild(0);
|
||||
|
||||
private Transform GetStickPivot()
|
||||
=> Resources.FindObjectsOfTypeAll<RoastingStickController>().First().transform.Find("Stick_Root/Stick_Pivot");
|
||||
|
||||
public override void OnStartLocalPlayer()
|
||||
=> LocalInstance = this;
|
||||
|
||||
@ -36,36 +54,130 @@ namespace QSB.Player.TransformSync
|
||||
protected override Transform InitLocalTransform()
|
||||
{
|
||||
SectorSync.Init(Locator.GetPlayerSectorDetector(), this);
|
||||
var body = GetPlayerModel();
|
||||
|
||||
GetComponent<AnimationSync>().InitLocal(body);
|
||||
GetComponent<InstrumentsManager>().InitLocal(body);
|
||||
// player body
|
||||
var playerBody = GetPlayerModel();
|
||||
GetComponent<AnimationSync>().InitLocal(playerBody);
|
||||
GetComponent<InstrumentsManager>().InitLocal(playerBody);
|
||||
Player.Body = playerBody.gameObject;
|
||||
|
||||
Player.Body = body.gameObject;
|
||||
// camera
|
||||
var cameraBody = Locator.GetPlayerCamera().gameObject.transform;
|
||||
Player.Camera = Locator.GetPlayerCamera();
|
||||
Player.CameraBody = cameraBody.gameObject;
|
||||
_visibleCameraRoot = cameraBody;
|
||||
|
||||
return body;
|
||||
// stick
|
||||
var pivot = GetStickPivot();
|
||||
Player.RoastingStick = pivot.gameObject;
|
||||
_visibleStickPivot = pivot;
|
||||
_visibleStickTip = pivot.Find("Stick_Tip");
|
||||
|
||||
Player.PlayerStates.IsReady = true;
|
||||
QSBEventManager.FireEvent(EventNames.QSBPlayerReady, true);
|
||||
DebugLog.DebugWrite("PlayerTransformSync init done - Request state!");
|
||||
QSBEventManager.FireEvent(EventNames.QSBPlayerStatesRequest);
|
||||
|
||||
return playerBody;
|
||||
}
|
||||
|
||||
protected override Transform InitRemoteTransform()
|
||||
{
|
||||
var body = Instantiate(GetPlayerModel());
|
||||
Player.Body = body.gameObject;
|
||||
// player body
|
||||
var playerBody = Instantiate(GetPlayerModel());
|
||||
Player.Body = playerBody.gameObject;
|
||||
|
||||
GetComponent<AnimationSync>().InitRemote(body);
|
||||
GetComponent<InstrumentsManager>().InitRemote(body);
|
||||
GetComponent<AnimationSync>().InitRemote(playerBody);
|
||||
GetComponent<InstrumentsManager>().InitRemote(playerBody);
|
||||
|
||||
var marker = body.gameObject.AddComponent<PlayerHUDMarker>();
|
||||
var marker = playerBody.gameObject.AddComponent<PlayerHUDMarker>();
|
||||
marker.Init(Player);
|
||||
|
||||
body.gameObject.AddComponent<PlayerMapMarker>().PlayerName = Player.Name;
|
||||
playerBody.gameObject.AddComponent<PlayerMapMarker>().PlayerName = Player.Name;
|
||||
|
||||
return body;
|
||||
// camera
|
||||
var cameraBody = new GameObject("RemotePlayerCamera");
|
||||
cameraBody.transform.parent = playerBody;
|
||||
|
||||
PlayerToolsManager.Init(cameraBody.transform);
|
||||
|
||||
var camera = cameraBody.AddComponent<Camera>();
|
||||
camera.enabled = false;
|
||||
var owcamera = cameraBody.AddComponent<OWCamera>();
|
||||
owcamera.fieldOfView = 70;
|
||||
owcamera.nearClipPlane = 0.1f;
|
||||
owcamera.farClipPlane = 50000f;
|
||||
Player.Camera = owcamera;
|
||||
Player.CameraBody = cameraBody;
|
||||
_visibleCameraRoot = cameraBody.transform;
|
||||
|
||||
// stick
|
||||
|
||||
var newPivot = Instantiate(GetStickPivot());
|
||||
// TODO : this is meant to be the camera?
|
||||
newPivot.parent = null;
|
||||
newPivot.gameObject.SetActive(false);
|
||||
Destroy(newPivot.Find("Stick_Tip/Props_HEA_RoastingStick/RoastingStick_Arm").gameObject);
|
||||
Destroy(newPivot.Find("Stick_Tip/Props_HEA_RoastingStick/RoastingStick_Arm_NoSuit").gameObject);
|
||||
var mallowRoot = newPivot.Find("Stick_Tip/Mallow_Root");
|
||||
mallowRoot.gameObject.SetActive(false);
|
||||
var oldMarshmallow = mallowRoot.GetComponent<Marshmallow>();
|
||||
|
||||
// Recreate particle system
|
||||
Destroy(mallowRoot.Find("MallowSmoke").GetComponent<RelativisticParticleSystem>());
|
||||
var newSystem = mallowRoot.Find("MallowSmoke").gameObject.AddComponent<CustomRelativisticParticleSystem>();
|
||||
newSystem.Init(Player);
|
||||
|
||||
// Create new marshmallow
|
||||
var newMarshmallow = mallowRoot.gameObject.AddComponent<QSBMarshmallow>();
|
||||
newMarshmallow._fireRenderer = oldMarshmallow.GetValue<MeshRenderer>("_fireRenderer");
|
||||
newMarshmallow._smokeParticles = oldMarshmallow.GetValue<ParticleSystem>("_smokeParticles");
|
||||
newMarshmallow._mallowRenderer = oldMarshmallow.GetValue<MeshRenderer>("_mallowRenderer");
|
||||
newMarshmallow._rawColor = oldMarshmallow.GetValue<Color>("_rawColor");
|
||||
newMarshmallow._toastedColor = oldMarshmallow.GetValue<Color>("_toastedColor");
|
||||
newMarshmallow._burntColor = oldMarshmallow.GetValue<Color>("_burntColor");
|
||||
Destroy(oldMarshmallow);
|
||||
|
||||
Player.RoastingStick = newPivot.gameObject;
|
||||
Player.Marshmallow = newMarshmallow;
|
||||
mallowRoot.gameObject.SetActive(true);
|
||||
_visibleStickPivot = newPivot;
|
||||
_visibleStickTip = newPivot.Find("Stick_Tip");
|
||||
|
||||
return playerBody;
|
||||
}
|
||||
|
||||
protected override void UpdateTransform()
|
||||
{
|
||||
base.UpdateTransform();
|
||||
|
||||
if (HasAuthority)
|
||||
{
|
||||
_networkStickPivot.localPosition = _visibleStickPivot.localPosition;
|
||||
_networkStickPivot.localRotation = _visibleStickPivot.localRotation;
|
||||
|
||||
_networkStickTip.localPosition = _visibleStickTip.localPosition;
|
||||
_networkStickTip.localRotation = _visibleStickTip.localRotation;
|
||||
|
||||
_networkCameraRoot.localPosition = _visibleCameraRoot.localPosition;
|
||||
_networkCameraRoot.localRotation = _visibleCameraRoot.localRotation;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
_visibleStickPivot.localPosition = _networkStickPivot.localPosition;
|
||||
_visibleStickPivot.localRotation = _networkStickPivot.localRotation;
|
||||
|
||||
_visibleStickTip.localPosition = _networkStickTip.localPosition;
|
||||
_visibleStickTip.localRotation = _networkStickTip.localRotation;
|
||||
|
||||
_visibleCameraRoot.localPosition = _networkCameraRoot.localPosition;
|
||||
_visibleCameraRoot.localRotation = _networkCameraRoot.localRotation;
|
||||
}
|
||||
|
||||
public override bool IsReady => Locator.GetPlayerTransform() != null
|
||||
&& Player != null
|
||||
&& QSBPlayerManager.PlayerExists(Player.PlayerId)
|
||||
&& Player.PlayerStates.IsReady
|
||||
&& NetId.Value != uint.MaxValue
|
||||
&& NetId.Value != 0U;
|
||||
|
||||
|
@ -287,7 +287,6 @@
|
||||
<Compile Include="StatueSync\Events\StartStatueMessage.cs" />
|
||||
<Compile Include="StatueSync\Patches\StatuePatches.cs" />
|
||||
<Compile Include="StatueSync\StatueManager.cs" />
|
||||
<Compile Include="RoastingSync\TransformSync\RoastingStickTransformSync.cs" />
|
||||
<Compile Include="Syncs\TransformSync\BaseTransformSync.cs" />
|
||||
<Compile Include="Syncs\IntermediaryTransform.cs" />
|
||||
<Compile Include="Syncs\TransformSync\SectoredTransformSync.cs" />
|
||||
@ -360,7 +359,6 @@
|
||||
<Compile Include="Player\PlayerInfo.cs" />
|
||||
<Compile Include="DeathSync\RespawnOnDeath.cs" />
|
||||
<Compile Include="Player\QSBPlayerManager.cs" />
|
||||
<Compile Include="Player\TransformSync\PlayerCameraSync.cs" />
|
||||
<Compile Include="Player\PlayerHUDMarker.cs" />
|
||||
<Compile Include="Tools\PlayerToolsManager.cs" />
|
||||
<Compile Include="Utility\QuaternionHelper.cs" />
|
||||
|
@ -11,7 +11,6 @@ using QSB.Player;
|
||||
using QSB.Player.TransformSync;
|
||||
using QSB.PoolSync;
|
||||
using QSB.ProbeSync.TransformSync;
|
||||
using QSB.RoastingSync.TransformSync;
|
||||
using QSB.ShipSync.TransformSync;
|
||||
using QSB.TimeSync;
|
||||
using QSB.Utility;
|
||||
@ -40,9 +39,7 @@ namespace QSB
|
||||
|
||||
private QSBNetworkLobby _lobby;
|
||||
private AssetBundle _assetBundle;
|
||||
private GameObject _cameraPrefab;
|
||||
private GameObject _probePrefab;
|
||||
private GameObject _stickPrefab;
|
||||
private bool _everConnected;
|
||||
|
||||
public new void Awake()
|
||||
@ -63,15 +60,10 @@ namespace QSB
|
||||
playerPrefab.AddComponent<JetpackAccelerationSync>();
|
||||
playerPrefab.AddComponent<InstrumentsManager>();
|
||||
|
||||
_cameraPrefab = _assetBundle.LoadAsset<GameObject>("assets/networkcameraroot.prefab");
|
||||
SetupNetworkId(_cameraPrefab);
|
||||
SetupNetworkTransform(_cameraPrefab);
|
||||
_cameraPrefab.AddComponent<PlayerCameraSync>();
|
||||
spawnPrefabs.Add(_cameraPrefab);
|
||||
|
||||
ShipPrefab = _assetBundle.LoadAsset<GameObject>("assets/networkship.prefab");
|
||||
SetupNetworkId(ShipPrefab);
|
||||
SetupNetworkTransform(_cameraPrefab);
|
||||
SetupNetworkTransform(ShipPrefab);
|
||||
ShipPrefab.AddComponent<ShipTransformSync>();
|
||||
spawnPrefabs.Add(ShipPrefab);
|
||||
|
||||
@ -87,12 +79,6 @@ namespace QSB
|
||||
OrbPrefab.AddComponent<NomaiOrbTransformSync>();
|
||||
spawnPrefabs.Add(OrbPrefab);
|
||||
|
||||
_stickPrefab = _assetBundle.LoadAsset<GameObject>("assets/networkstickpivot.prefab");
|
||||
SetupNetworkId(_stickPrefab);
|
||||
SetupNetworkTransform(_stickPrefab);
|
||||
_stickPrefab.AddComponent<RoastingStickTransformSync>();
|
||||
spawnPrefabs.Add(_stickPrefab);
|
||||
|
||||
ConfigureNetworkManager();
|
||||
}
|
||||
|
||||
@ -146,9 +132,7 @@ namespace QSB
|
||||
DebugLog.DebugWrite($"OnServerAddPlayer {playerControllerId}", MessageType.Info);
|
||||
base.OnServerAddPlayer(connection, playerControllerId);
|
||||
|
||||
QNetworkServer.SpawnWithClientAuthority(Instantiate(_cameraPrefab), connection);
|
||||
QNetworkServer.SpawnWithClientAuthority(Instantiate(_probePrefab), connection);
|
||||
QNetworkServer.SpawnWithClientAuthority(Instantiate(_stickPrefab), connection);
|
||||
}
|
||||
|
||||
public override void OnStartClient(QNetworkClient _)
|
||||
|
@ -1,94 +0,0 @@
|
||||
using OWML.Utils;
|
||||
using QSB.Player;
|
||||
using QSB.SectorSync;
|
||||
using QSB.Syncs.TransformSync;
|
||||
using QSB.Utility;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
|
||||
namespace QSB.RoastingSync.TransformSync
|
||||
{
|
||||
internal class RoastingStickTransformSync : SectoredTransformSync
|
||||
{
|
||||
private Transform _stickTip;
|
||||
private Transform _networkStickTip => gameObject.transform.GetChild(0);
|
||||
private const float SmoothTime = 0.1f;
|
||||
private Vector3 _positionSmoothVelocity;
|
||||
private Quaternion _rotationSmoothVelocity;
|
||||
|
||||
private Transform GetPivot()
|
||||
=> Resources.FindObjectsOfTypeAll<RoastingStickController>().First().transform.Find("Stick_Root/Stick_Pivot");
|
||||
|
||||
protected override Transform InitLocalTransform()
|
||||
{
|
||||
var pivot = GetPivot();
|
||||
Player.RoastingStick = pivot.gameObject;
|
||||
_stickTip = pivot.Find("Stick_Tip");
|
||||
return pivot;
|
||||
}
|
||||
|
||||
protected override Transform InitRemoteTransform()
|
||||
{
|
||||
var newPivot = Instantiate(GetPivot());
|
||||
newPivot.parent = null;
|
||||
newPivot.gameObject.SetActive(false);
|
||||
Destroy(newPivot.Find("Stick_Tip/Props_HEA_RoastingStick/RoastingStick_Arm").gameObject);
|
||||
Destroy(newPivot.Find("Stick_Tip/Props_HEA_RoastingStick/RoastingStick_Arm_NoSuit").gameObject);
|
||||
var mallowRoot = newPivot.Find("Stick_Tip/Mallow_Root");
|
||||
mallowRoot.gameObject.SetActive(false);
|
||||
var oldMarshmallow = mallowRoot.GetComponent<Marshmallow>();
|
||||
|
||||
// Recreate particle system
|
||||
Destroy(mallowRoot.Find("MallowSmoke").GetComponent<RelativisticParticleSystem>());
|
||||
var newSystem = mallowRoot.Find("MallowSmoke").gameObject.AddComponent<CustomRelativisticParticleSystem>();
|
||||
newSystem.Init(Player);
|
||||
|
||||
// Create new marshmallow
|
||||
var newMarshmallow = mallowRoot.gameObject.AddComponent<QSBMarshmallow>();
|
||||
newMarshmallow._fireRenderer = oldMarshmallow.GetValue<MeshRenderer>("_fireRenderer");
|
||||
newMarshmallow._smokeParticles = oldMarshmallow.GetValue<ParticleSystem>("_smokeParticles");
|
||||
newMarshmallow._mallowRenderer = oldMarshmallow.GetValue<MeshRenderer>("_mallowRenderer");
|
||||
newMarshmallow._rawColor = oldMarshmallow.GetValue<Color>("_rawColor");
|
||||
newMarshmallow._toastedColor = oldMarshmallow.GetValue<Color>("_toastedColor");
|
||||
newMarshmallow._burntColor = oldMarshmallow.GetValue<Color>("_burntColor");
|
||||
Destroy(oldMarshmallow);
|
||||
|
||||
Player.RoastingStick = newPivot.gameObject;
|
||||
Player.Marshmallow = newMarshmallow;
|
||||
mallowRoot.gameObject.SetActive(true);
|
||||
_stickTip = newPivot.Find("Stick_Tip");
|
||||
return newPivot;
|
||||
}
|
||||
|
||||
protected override void UpdateTransform()
|
||||
{
|
||||
base.UpdateTransform();
|
||||
if (_stickTip == null)
|
||||
{
|
||||
DebugLog.ToConsole($"Warning - _stickTip is null for player {PlayerId}", OWML.Common.MessageType.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
if (HasAuthority)
|
||||
{
|
||||
_networkStickTip.localPosition = _stickTip.localPosition;
|
||||
_networkStickTip.localRotation = _stickTip.localRotation;
|
||||
return;
|
||||
}
|
||||
|
||||
_stickTip.localPosition = Vector3.SmoothDamp(_stickTip.localPosition, _networkStickTip.localPosition, ref _positionSmoothVelocity, SmoothTime);
|
||||
_stickTip.localRotation = QuaternionHelper.SmoothDamp(_stickTip.localRotation, _networkStickTip.localRotation, ref _rotationSmoothVelocity, SmoothTime);
|
||||
}
|
||||
|
||||
public override bool IsReady => Locator.GetPlayerTransform() != null
|
||||
&& Player != null
|
||||
&& QSBPlayerManager.PlayerExists(Player.PlayerId)
|
||||
&& Player.PlayerStates.IsReady
|
||||
&& NetId.Value != uint.MaxValue
|
||||
&& NetId.Value != 0U;
|
||||
|
||||
public override bool UseInterpolation => true;
|
||||
|
||||
public override TargetType Type => TargetType.RoastingStick;
|
||||
}
|
||||
}
|
@ -5,9 +5,7 @@
|
||||
None = 0,
|
||||
Player = 1,
|
||||
Probe = 2,
|
||||
PlayerCamera = 3,
|
||||
RoastingStick = 4,
|
||||
Ship = 5,
|
||||
Other = 6
|
||||
Ship = 3,
|
||||
Other = 4
|
||||
}
|
||||
}
|
||||
|
@ -66,6 +66,7 @@ namespace QSB.Syncs.TransformSync
|
||||
}
|
||||
else
|
||||
{
|
||||
DebugLog.ToConsole($"Warning - ReferenceSector of {PlayerId}.{GetType().Name} is null.");
|
||||
writer.Write(-1);
|
||||
}
|
||||
|
||||
@ -89,7 +90,13 @@ namespace QSB.Syncs.TransformSync
|
||||
|
||||
if (sector != ReferenceSector)
|
||||
{
|
||||
DebugLog.DebugWrite($"DESERAILIZE new sector ({ReferenceSector.Name} to {sector.Name})");
|
||||
if (sector == null)
|
||||
{
|
||||
DebugLog.ToConsole($"Error - {PlayerId}.{GetType().Name} got sector of ID -1.", OWML.Common.MessageType.Error);
|
||||
base.DeserializeTransform(reader);
|
||||
return;
|
||||
}
|
||||
DebugLog.DebugWrite($"DESERAILIZE new sector ({(ReferenceSector == null ? "NULL" : ReferenceSector.Name)} to {sector.Name})");
|
||||
SetReferenceSector(sector);
|
||||
}
|
||||
|
||||
@ -107,6 +114,7 @@ namespace QSB.Syncs.TransformSync
|
||||
}
|
||||
else
|
||||
{
|
||||
DebugLog.ToConsole($"Error - No closest sector found to {PlayerId}.{GetType().Name}!", OWML.Common.MessageType.Error);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -15,8 +15,6 @@ namespace QuantumUNET.Components
|
||||
public QNetworkTransform m_Root;
|
||||
public float m_SendInterval = 0.1f;
|
||||
public float m_MovementThreshold = 0.001f;
|
||||
public float m_InterpolateRotation = 0.5f;
|
||||
public float m_InterpolateMovement = 0.5f;
|
||||
public float LastSyncTime { get; private set; }
|
||||
public Vector3 TargetSyncPosition => _targetSyncPosition;
|
||||
public Quaternion TargetSyncRotation3D => _targetSyncRotation3D;
|
||||
@ -50,18 +48,6 @@ namespace QuantumUNET.Components
|
||||
set => m_MovementThreshold = value;
|
||||
}
|
||||
|
||||
public float InterpolateRotation
|
||||
{
|
||||
get => m_InterpolateRotation;
|
||||
set => m_InterpolateRotation = value;
|
||||
}
|
||||
|
||||
public float InterpolateMovement
|
||||
{
|
||||
get => m_InterpolateMovement;
|
||||
set => m_InterpolateMovement = value;
|
||||
}
|
||||
|
||||
public void Awake()
|
||||
{
|
||||
_prevPosition = m_Target.localPosition;
|
||||
@ -122,47 +108,56 @@ namespace QuantumUNET.Components
|
||||
|
||||
private void FixedUpdateClient()
|
||||
{
|
||||
if (LastSyncTime != 0f)
|
||||
if (LastSyncTime == 0f)
|
||||
{
|
||||
if (QNetworkServer.active || QNetworkClient.active)
|
||||
{
|
||||
if (IsServer || IsClient)
|
||||
{
|
||||
if (GetNetworkSendInterval() != 0f)
|
||||
{
|
||||
if (!HasAuthority)
|
||||
{
|
||||
if (LastSyncTime != 0f)
|
||||
{
|
||||
m_Target.localPosition = m_InterpolateMovement > 0f
|
||||
? Vector3.Lerp(m_Target.localPosition, _targetSyncPosition, m_InterpolateMovement)
|
||||
: _targetSyncPosition;
|
||||
m_Target.localRotation = m_InterpolateRotation > 0f
|
||||
? Quaternion.Slerp(m_Target.localRotation, _targetSyncRotation3D, m_InterpolateRotation)
|
||||
: _targetSyncRotation3D;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (!QNetworkServer.active && !QNetworkClient.active)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!IsServer && !IsClient)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (GetNetworkSendInterval() == 0f)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (HasAuthority)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
m_Target.localPosition = _targetSyncPosition;
|
||||
m_Target.localRotation = _targetSyncRotation3D;
|
||||
}
|
||||
|
||||
public void Update()
|
||||
{
|
||||
if (HasAuthority)
|
||||
if (!HasAuthority)
|
||||
{
|
||||
if (LocalPlayerAuthority)
|
||||
{
|
||||
if (!QNetworkServer.active)
|
||||
{
|
||||
if (Time.time - _lastClientSendTime > GetNetworkSendInterval())
|
||||
{
|
||||
SendTransform();
|
||||
_lastClientSendTime = Time.time;
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (!LocalPlayerAuthority)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (QNetworkServer.active)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (Time.time - _lastClientSendTime > GetNetworkSendInterval())
|
||||
{
|
||||
SendTransform();
|
||||
_lastClientSendTime = Time.time;
|
||||
}
|
||||
}
|
||||
|
||||
@ -255,6 +250,7 @@ namespace QuantumUNET.Components
|
||||
}
|
||||
}
|
||||
|
||||
// Called on the server
|
||||
internal static void HandleChildTransform(QNetworkMessage netMsg)
|
||||
{
|
||||
var networkInstanceId = netMsg.Reader.ReadNetworkId();
|
||||
|
Loading…
x
Reference in New Issue
Block a user