quantum-space-buddies/QSB/Animation/Player/Thrusters/JetpackAccelerationSync.cs

49 lines
1.4 KiB
C#
Raw Normal View History

2021-11-26 19:33:56 +00:00
using QSB.Utility.VariableSync;
using QuantumUNET;
2021-05-07 13:58:37 +00:00
using UnityEngine;
namespace QSB.Animation.Player.Thrusters
{
public class JetpackAccelerationSync : QNetworkBehaviour
{
2021-11-26 19:33:56 +00:00
public Vector3VariableSyncer AccelerationVariableSyncer;
public BoolVariableSyncer ThrustingVariableSyncer;
public Vector3 LocalAcceleration => _accelerationValueReference.Value;
public bool IsThrusting => _thrustingValueReference.Value;
private VariableReference<Vector3> _accelerationValueReference;
private VariableReference<bool> _thrustingValueReference;
2021-05-07 13:58:37 +00:00
private Vector3 _localAcceleration;
2021-05-07 18:17:09 +00:00
private bool _isThrusting;
2021-05-07 13:58:37 +00:00
private ThrusterModel _thrusterModel;
2021-06-19 10:26:05 +00:00
public void Init(ThrusterModel model)
2021-11-26 19:33:56 +00:00
{
_thrusterModel = model;
_accelerationValueReference = new VariableReference<Vector3>(() => _localAcceleration, val => _localAcceleration = val);
AccelerationVariableSyncer.FloatToSync = _accelerationValueReference;
_thrustingValueReference = new VariableReference<bool>(() => _isThrusting, val => _isThrusting = val);
ThrustingVariableSyncer.FloatToSync = _thrustingValueReference;
}
2021-05-07 13:58:37 +00:00
public void Update()
{
if (IsLocalPlayer)
{
SyncLocalAccel();
}
}
private void SyncLocalAccel()
{
if (_thrusterModel != null)
{
2021-11-26 19:33:56 +00:00
_accelerationValueReference.Value = _thrusterModel.GetLocalAcceleration();
_thrustingValueReference.Value = _thrusterModel.IsTranslationalThrusterFiring();
2021-05-07 13:58:37 +00:00
}
}
}
}