mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-04-16 14:42:35 +00:00
more cleanup
This commit is contained in:
parent
2aa2a04473
commit
9f57454ae9
@ -5,6 +5,7 @@ namespace QSB.Anglerfish
|
|||||||
{
|
{
|
||||||
public class AnglerManager : WorldObjectManager
|
public class AnglerManager : WorldObjectManager
|
||||||
{
|
{
|
||||||
protected override void RebuildWorldObjects(OWScene scene) => QSBWorldSync.Init<QSBAngler, AnglerfishController>();
|
protected override void RebuildWorldObjects(OWScene scene)
|
||||||
|
=> QSBWorldSync.Init<QSBAngler, AnglerfishController>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,17 +11,22 @@ namespace QSB.Anglerfish.Events
|
|||||||
public class AnglerChangeStateEvent : QSBEvent<AnglerChangeStateMessage>
|
public class AnglerChangeStateEvent : QSBEvent<AnglerChangeStateMessage>
|
||||||
{
|
{
|
||||||
public override EventType Type => EventType.AnglerChangeState;
|
public override EventType Type => EventType.AnglerChangeState;
|
||||||
public override void SetupListener() => GlobalMessenger<QSBAngler>.AddListener(EventNames.QSBAnglerChangeState, Handler);
|
|
||||||
public override void CloseListener() => GlobalMessenger<QSBAngler>.RemoveListener(EventNames.QSBAnglerChangeState, Handler);
|
|
||||||
|
|
||||||
private void Handler(QSBAngler qsbAngler) =>
|
public override void SetupListener()
|
||||||
SendEvent(new AnglerChangeStateMessage
|
=> GlobalMessenger<QSBAngler>.AddListener(EventNames.QSBAnglerChangeState, Handler);
|
||||||
{
|
|
||||||
ObjectId = qsbAngler.ObjectId,
|
public override void CloseListener()
|
||||||
EnumValue = qsbAngler.AttachedObject._currentState,
|
=> GlobalMessenger<QSBAngler>.RemoveListener(EventNames.QSBAnglerChangeState, Handler);
|
||||||
targetId = TargetToId(qsbAngler.targetTransform),
|
|
||||||
localDisturbancePos = qsbAngler.AttachedObject._localDisturbancePos
|
private void Handler(QSBAngler qsbAngler) => SendEvent(CreateMessage(qsbAngler));
|
||||||
});
|
|
||||||
|
private AnglerChangeStateMessage CreateMessage(QSBAngler qsbAngler) => new AnglerChangeStateMessage
|
||||||
|
{
|
||||||
|
ObjectId = qsbAngler.ObjectId,
|
||||||
|
EnumValue = qsbAngler.AttachedObject._currentState,
|
||||||
|
TargetId = TargetToId(qsbAngler.TargetTransform),
|
||||||
|
LocalDisturbancePos = qsbAngler.AttachedObject._localDisturbancePos
|
||||||
|
};
|
||||||
|
|
||||||
public override void OnReceiveLocal(bool isHost, AnglerChangeStateMessage message) => OnReceive(isHost, message);
|
public override void OnReceiveLocal(bool isHost, AnglerChangeStateMessage message) => OnReceive(isHost, message);
|
||||||
public override void OnReceiveRemote(bool isHost, AnglerChangeStateMessage message) => OnReceive(isHost, message);
|
public override void OnReceiveRemote(bool isHost, AnglerChangeStateMessage message) => OnReceive(isHost, message);
|
||||||
@ -36,8 +41,8 @@ namespace QSB.Anglerfish.Events
|
|||||||
qsbAngler.TransferAuthority(message.FromId);
|
qsbAngler.TransferAuthority(message.FromId);
|
||||||
}
|
}
|
||||||
|
|
||||||
qsbAngler.targetTransform = IdToTarget(message.targetId);
|
qsbAngler.TargetTransform = IdToTarget(message.TargetId);
|
||||||
qsbAngler.AttachedObject._localDisturbancePos = message.localDisturbancePos;
|
qsbAngler.AttachedObject._localDisturbancePos = message.LocalDisturbancePos;
|
||||||
qsbAngler.AttachedObject.ChangeState(message.EnumValue);
|
qsbAngler.AttachedObject.ChangeState(message.EnumValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -47,10 +52,12 @@ namespace QSB.Anglerfish.Events
|
|||||||
{
|
{
|
||||||
return uint.MaxValue;
|
return uint.MaxValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (transform == Locator.GetShipTransform())
|
if (transform == Locator.GetShipTransform())
|
||||||
{
|
{
|
||||||
return uint.MaxValue - 1;
|
return uint.MaxValue - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return QSBPlayerManager.LocalPlayerId;
|
return QSBPlayerManager.LocalPlayerId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,10 +67,12 @@ namespace QSB.Anglerfish.Events
|
|||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (id == uint.MaxValue - 1)
|
if (id == uint.MaxValue - 1)
|
||||||
{
|
{
|
||||||
return Locator.GetShipTransform();
|
return Locator.GetShipTransform();
|
||||||
}
|
}
|
||||||
|
|
||||||
return QSBPlayerManager.GetPlayer(id).Body.transform;
|
return QSBPlayerManager.GetPlayer(id).Body.transform;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,21 +6,21 @@ namespace QSB.Anglerfish.Events
|
|||||||
{
|
{
|
||||||
public class AnglerChangeStateMessage : EnumWorldObjectMessage<AnglerfishController.AnglerState>
|
public class AnglerChangeStateMessage : EnumWorldObjectMessage<AnglerfishController.AnglerState>
|
||||||
{
|
{
|
||||||
public uint targetId;
|
public uint TargetId;
|
||||||
public Vector3 localDisturbancePos;
|
public Vector3 LocalDisturbancePos;
|
||||||
|
|
||||||
public override void Deserialize(QNetworkReader reader)
|
public override void Deserialize(QNetworkReader reader)
|
||||||
{
|
{
|
||||||
base.Deserialize(reader);
|
base.Deserialize(reader);
|
||||||
targetId = reader.ReadUInt32();
|
TargetId = reader.ReadUInt32();
|
||||||
localDisturbancePos = reader.ReadVector3();
|
LocalDisturbancePos = reader.ReadVector3();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Serialize(QNetworkWriter writer)
|
public override void Serialize(QNetworkWriter writer)
|
||||||
{
|
{
|
||||||
base.Serialize(writer);
|
base.Serialize(writer);
|
||||||
writer.Write(targetId);
|
writer.Write(TargetId);
|
||||||
writer.Write(localDisturbancePos);
|
writer.Write(LocalDisturbancePos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,12 +17,14 @@ namespace QSB.Anglerfish.Patches
|
|||||||
public static bool GetTargetPosition(AnglerfishController __instance, ref Vector3 __result)
|
public static bool GetTargetPosition(AnglerfishController __instance, ref Vector3 __result)
|
||||||
{
|
{
|
||||||
var qsbAngler = QSBWorldSync.GetWorldFromUnity<QSBAngler>(__instance);
|
var qsbAngler = QSBWorldSync.GetWorldFromUnity<QSBAngler>(__instance);
|
||||||
if (qsbAngler == null || qsbAngler.transformSync == null)
|
if (qsbAngler == null || qsbAngler.TransformSync == null)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
__result = qsbAngler.targetTransform != null ? qsbAngler.targetTransform.position : __instance._brambleBody.transform.TransformPoint(__instance._localDisturbancePos);
|
__result = qsbAngler.TargetTransform != null
|
||||||
|
? qsbAngler.TargetTransform.position
|
||||||
|
: __instance._brambleBody.transform.TransformPoint(__instance._localDisturbancePos);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -34,17 +36,17 @@ namespace QSB.Anglerfish.Patches
|
|||||||
SectorDetector sectorDetector)
|
SectorDetector sectorDetector)
|
||||||
{
|
{
|
||||||
var qsbAngler = QSBWorldSync.GetWorldFromUnity<QSBAngler>(__instance);
|
var qsbAngler = QSBWorldSync.GetWorldFromUnity<QSBAngler>(__instance);
|
||||||
if (qsbAngler == null || qsbAngler.transformSync == null)
|
if (qsbAngler == null || qsbAngler.TransformSync == null)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(qsbAngler.targetTransform != null) || !(sectorDetector.GetAttachedOWRigidbody().transform == qsbAngler.targetTransform))
|
if (!(qsbAngler.TargetTransform != null) || !(sectorDetector.GetAttachedOWRigidbody().transform == qsbAngler.TargetTransform))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
qsbAngler.targetTransform = null;
|
qsbAngler.TargetTransform = null;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -55,7 +57,7 @@ namespace QSB.Anglerfish.Patches
|
|||||||
public static bool UpdateState(AnglerfishController __instance)
|
public static bool UpdateState(AnglerfishController __instance)
|
||||||
{
|
{
|
||||||
var qsbAngler = QSBWorldSync.GetWorldFromUnity<QSBAngler>(__instance);
|
var qsbAngler = QSBWorldSync.GetWorldFromUnity<QSBAngler>(__instance);
|
||||||
if (qsbAngler == null || qsbAngler.transformSync == null)
|
if (qsbAngler == null || qsbAngler.TransformSync == null)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -71,49 +73,54 @@ namespace QSB.Anglerfish.Patches
|
|||||||
__instance.ChangeState(AnglerfishController.AnglerState.Lurking);
|
__instance.ChangeState(AnglerfishController.AnglerState.Lurking);
|
||||||
QSBEventManager.FireEvent(EventNames.QSBAnglerChangeState, qsbAngler);
|
QSBEventManager.FireEvent(EventNames.QSBAnglerChangeState, qsbAngler);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AnglerfishController.AnglerState.Chasing:
|
case AnglerfishController.AnglerState.Chasing:
|
||||||
if (qsbAngler.targetTransform == null)
|
if (qsbAngler.TargetTransform == null)
|
||||||
{
|
{
|
||||||
__instance.ChangeState(AnglerfishController.AnglerState.Lurking);
|
__instance.ChangeState(AnglerfishController.AnglerState.Lurking);
|
||||||
QSBEventManager.FireEvent(EventNames.QSBAnglerChangeState, qsbAngler);
|
QSBEventManager.FireEvent(EventNames.QSBAnglerChangeState, qsbAngler);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ((qsbAngler.targetTransform.position - __instance._anglerBody.GetPosition()).sqrMagnitude <= __instance._escapeDistance * (double)__instance._escapeDistance)
|
|
||||||
|
if ((qsbAngler.TargetTransform.position - __instance._anglerBody.GetPosition()).sqrMagnitude <= __instance._escapeDistance * (double)__instance._escapeDistance)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
qsbAngler.targetTransform = null;
|
qsbAngler.TargetTransform = null;
|
||||||
__instance.ChangeState(AnglerfishController.AnglerState.Lurking);
|
__instance.ChangeState(AnglerfishController.AnglerState.Lurking);
|
||||||
QSBEventManager.FireEvent(EventNames.QSBAnglerChangeState, qsbAngler);
|
QSBEventManager.FireEvent(EventNames.QSBAnglerChangeState, qsbAngler);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AnglerfishController.AnglerState.Consuming:
|
case AnglerfishController.AnglerState.Consuming:
|
||||||
if (__instance._consumeComplete)
|
if (__instance._consumeComplete)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (qsbAngler.targetTransform == null)
|
if (qsbAngler.TargetTransform == null)
|
||||||
{
|
{
|
||||||
__instance.ChangeState(AnglerfishController.AnglerState.Lurking);
|
__instance.ChangeState(AnglerfishController.AnglerState.Lurking);
|
||||||
QSBEventManager.FireEvent(EventNames.QSBAnglerChangeState, qsbAngler);
|
QSBEventManager.FireEvent(EventNames.QSBAnglerChangeState, qsbAngler);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
var num = Time.time - __instance._consumeStartTime;
|
var num = Time.time - __instance._consumeStartTime;
|
||||||
if (qsbAngler.targetTransform.CompareTag("Player") && num > (double)__instance._consumeDeathDelay)
|
if (qsbAngler.TargetTransform.CompareTag("Player") && num > (double)__instance._consumeDeathDelay)
|
||||||
{
|
{
|
||||||
Locator.GetDeathManager().KillPlayer(DeathType.Digestion);
|
Locator.GetDeathManager().KillPlayer(DeathType.Digestion);
|
||||||
__instance._consumeComplete = true;
|
__instance._consumeComplete = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (!qsbAngler.targetTransform.CompareTag("Ship"))
|
|
||||||
|
if (!qsbAngler.TargetTransform.CompareTag("Ship"))
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (num > (double)__instance._consumeShipCrushDelay)
|
if (num > (double)__instance._consumeShipCrushDelay)
|
||||||
{
|
{
|
||||||
qsbAngler.targetTransform.GetComponentInChildren<ShipDamageController>().TriggerSystemFailure();
|
qsbAngler.TargetTransform.GetComponentInChildren<ShipDamageController>().TriggerSystemFailure();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (num <= (double)__instance._consumeDeathDelay)
|
if (num <= (double)__instance._consumeDeathDelay)
|
||||||
@ -128,6 +135,7 @@ namespace QSB.Anglerfish.Patches
|
|||||||
|
|
||||||
__instance._consumeComplete = true;
|
__instance._consumeComplete = true;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AnglerfishController.AnglerState.Stunned:
|
case AnglerfishController.AnglerState.Stunned:
|
||||||
__instance._stunTimer -= Time.deltaTime;
|
__instance._stunTimer -= Time.deltaTime;
|
||||||
if (__instance._stunTimer > 0.0)
|
if (__instance._stunTimer > 0.0)
|
||||||
@ -135,7 +143,7 @@ namespace QSB.Anglerfish.Patches
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (qsbAngler.targetTransform != null)
|
if (qsbAngler.TargetTransform != null)
|
||||||
{
|
{
|
||||||
__instance.ChangeState(AnglerfishController.AnglerState.Chasing);
|
__instance.ChangeState(AnglerfishController.AnglerState.Chasing);
|
||||||
QSBEventManager.FireEvent(EventNames.QSBAnglerChangeState, qsbAngler);
|
QSBEventManager.FireEvent(EventNames.QSBAnglerChangeState, qsbAngler);
|
||||||
@ -155,14 +163,16 @@ namespace QSB.Anglerfish.Patches
|
|||||||
public static bool UpdateMovement(AnglerfishController __instance)
|
public static bool UpdateMovement(AnglerfishController __instance)
|
||||||
{
|
{
|
||||||
var qsbAngler = QSBWorldSync.GetWorldFromUnity<QSBAngler>(__instance);
|
var qsbAngler = QSBWorldSync.GetWorldFromUnity<QSBAngler>(__instance);
|
||||||
if (qsbAngler == null || qsbAngler.transformSync == null)
|
if (qsbAngler == null || qsbAngler.TransformSync == null)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!qsbAngler.transformSync.HasAuthority)
|
|
||||||
|
if (!qsbAngler.TransformSync.HasAuthority)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
qsbAngler.FixedUpdate();
|
qsbAngler.FixedUpdate();
|
||||||
|
|
||||||
if (__instance._anglerBody.GetVelocity().sqrMagnitude > (double)Mathf.Pow(__instance._chaseSpeed * 1.5f, 2f))
|
if (__instance._anglerBody.GetVelocity().sqrMagnitude > (double)Mathf.Pow(__instance._chaseSpeed * 1.5f, 2f))
|
||||||
@ -175,6 +185,7 @@ namespace QSB.Anglerfish.Patches
|
|||||||
case AnglerfishController.AnglerState.Lurking:
|
case AnglerfishController.AnglerState.Lurking:
|
||||||
__instance.ApplyDrag(1f);
|
__instance.ApplyDrag(1f);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AnglerfishController.AnglerState.Investigating:
|
case AnglerfishController.AnglerState.Investigating:
|
||||||
var targetPos = __instance._brambleBody.transform.TransformPoint(__instance._localDisturbancePos);
|
var targetPos = __instance._brambleBody.transform.TransformPoint(__instance._localDisturbancePos);
|
||||||
__instance.RotateTowardsTarget(targetPos, __instance._turnSpeed, __instance._turnSpeed);
|
__instance.RotateTowardsTarget(targetPos, __instance._turnSpeed, __instance._turnSpeed);
|
||||||
@ -185,10 +196,11 @@ namespace QSB.Anglerfish.Patches
|
|||||||
|
|
||||||
__instance.MoveTowardsTarget(targetPos, __instance._investigateSpeed, __instance._acceleration);
|
__instance.MoveTowardsTarget(targetPos, __instance._investigateSpeed, __instance._acceleration);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AnglerfishController.AnglerState.Chasing:
|
case AnglerfishController.AnglerState.Chasing:
|
||||||
var velocity = qsbAngler.TargetVelocity;
|
var velocity = qsbAngler.TargetVelocity;
|
||||||
var normalized = velocity.normalized;
|
var normalized = velocity.normalized;
|
||||||
var from = __instance._anglerBody.GetPosition() + __instance.transform.TransformDirection(__instance._mouthOffset) - qsbAngler.targetTransform.position;
|
var from = __instance._anglerBody.GetPosition() + __instance.transform.TransformDirection(__instance._mouthOffset) - qsbAngler.TargetTransform.position;
|
||||||
var magnitude1 = velocity.magnitude;
|
var magnitude1 = velocity.magnitude;
|
||||||
var num1 = Vector3.Angle(from, normalized);
|
var num1 = Vector3.Angle(from, normalized);
|
||||||
var a = magnitude1 * 2f;
|
var a = magnitude1 * 2f;
|
||||||
@ -211,7 +223,8 @@ namespace QSB.Anglerfish.Patches
|
|||||||
num2 = Mathf.Lerp(num4, 0.0f, num6 * num6);
|
num2 = Mathf.Lerp(num4, 0.0f, num6 * num6);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
__instance._targetPos = qsbAngler.targetTransform.position + normalized * num2;
|
|
||||||
|
__instance._targetPos = qsbAngler.TargetTransform.position + normalized * num2;
|
||||||
__instance.RotateTowardsTarget(__instance._targetPos, __instance._turnSpeed, __instance._quickTurnSpeed);
|
__instance.RotateTowardsTarget(__instance._targetPos, __instance._turnSpeed, __instance._quickTurnSpeed);
|
||||||
if (__instance._turningInPlace)
|
if (__instance._turningInPlace)
|
||||||
{
|
{
|
||||||
@ -220,9 +233,11 @@ namespace QSB.Anglerfish.Patches
|
|||||||
|
|
||||||
__instance.MoveTowardsTarget(__instance._targetPos, __instance._chaseSpeed, __instance._acceleration);
|
__instance.MoveTowardsTarget(__instance._targetPos, __instance._chaseSpeed, __instance._acceleration);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AnglerfishController.AnglerState.Consuming:
|
case AnglerfishController.AnglerState.Consuming:
|
||||||
__instance.ApplyDrag(1f);
|
__instance.ApplyDrag(1f);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AnglerfishController.AnglerState.Stunned:
|
case AnglerfishController.AnglerState.Stunned:
|
||||||
__instance.ApplyDrag(0.5f);
|
__instance.ApplyDrag(0.5f);
|
||||||
break;
|
break;
|
||||||
@ -238,15 +253,17 @@ namespace QSB.Anglerfish.Patches
|
|||||||
ImpactData impact)
|
ImpactData impact)
|
||||||
{
|
{
|
||||||
var qsbAngler = QSBWorldSync.GetWorldFromUnity<QSBAngler>(__instance);
|
var qsbAngler = QSBWorldSync.GetWorldFromUnity<QSBAngler>(__instance);
|
||||||
if (qsbAngler == null || qsbAngler.transformSync == null)
|
if (qsbAngler == null || qsbAngler.TransformSync == null)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
var attachedOwRigidbody = impact.otherCollider.GetAttachedOWRigidbody();
|
var attachedOwRigidbody = impact.otherCollider.GetAttachedOWRigidbody();
|
||||||
if ((attachedOwRigidbody.CompareTag("Player") || attachedOwRigidbody.CompareTag("Ship")) && __instance._currentState != AnglerfishController.AnglerState.Consuming && __instance._currentState != AnglerfishController.AnglerState.Stunned)
|
if ((attachedOwRigidbody.CompareTag("Player") || attachedOwRigidbody.CompareTag("Ship"))
|
||||||
|
&& __instance._currentState != AnglerfishController.AnglerState.Consuming
|
||||||
|
&& __instance._currentState != AnglerfishController.AnglerState.Stunned)
|
||||||
{
|
{
|
||||||
qsbAngler.targetTransform = attachedOwRigidbody.transform;
|
qsbAngler.TargetTransform = attachedOwRigidbody.transform;
|
||||||
__instance.ChangeState(AnglerfishController.AnglerState.Chasing);
|
__instance.ChangeState(AnglerfishController.AnglerState.Chasing);
|
||||||
QSBEventManager.FireEvent(EventNames.QSBAnglerChangeState, qsbAngler);
|
QSBEventManager.FireEvent(EventNames.QSBAnglerChangeState, qsbAngler);
|
||||||
}
|
}
|
||||||
@ -261,24 +278,25 @@ namespace QSB.Anglerfish.Patches
|
|||||||
NoiseMaker noiseMaker)
|
NoiseMaker noiseMaker)
|
||||||
{
|
{
|
||||||
var qsbAngler = QSBWorldSync.GetWorldFromUnity<QSBAngler>(__instance);
|
var qsbAngler = QSBWorldSync.GetWorldFromUnity<QSBAngler>(__instance);
|
||||||
if (qsbAngler == null || qsbAngler.transformSync == null)
|
if (qsbAngler == null || qsbAngler.TransformSync == null)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (__instance._currentState == AnglerfishController.AnglerState.Consuming || __instance._currentState == AnglerfishController.AnglerState.Stunned)
|
if (__instance._currentState == AnglerfishController.AnglerState.Consuming
|
||||||
|
|| __instance._currentState == AnglerfishController.AnglerState.Stunned)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((noiseMaker.GetNoiseOrigin() - __instance.transform.position).sqrMagnitude < __instance._pursueDistance * (double)__instance._pursueDistance)
|
if ((noiseMaker.GetNoiseOrigin() - __instance.transform.position).sqrMagnitude < __instance._pursueDistance * (double)__instance._pursueDistance)
|
||||||
{
|
{
|
||||||
if (!(qsbAngler.targetTransform != noiseMaker.GetAttachedBody().transform))
|
if (!(qsbAngler.TargetTransform != noiseMaker.GetAttachedBody().transform))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
qsbAngler.targetTransform = noiseMaker.GetAttachedBody().transform;
|
qsbAngler.TargetTransform = noiseMaker.GetAttachedBody().transform;
|
||||||
if (__instance._currentState == AnglerfishController.AnglerState.Chasing)
|
if (__instance._currentState == AnglerfishController.AnglerState.Chasing)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@ -289,7 +307,8 @@ namespace QSB.Anglerfish.Patches
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (__instance._currentState != AnglerfishController.AnglerState.Lurking && __instance._currentState != AnglerfishController.AnglerState.Investigating)
|
if (__instance._currentState != AnglerfishController.AnglerState.Lurking
|
||||||
|
&& __instance._currentState != AnglerfishController.AnglerState.Investigating)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -317,7 +336,7 @@ namespace QSB.Anglerfish.Patches
|
|||||||
|
|
||||||
if (__instance._currentState == AnglerfishController.AnglerState.Consuming)
|
if (__instance._currentState == AnglerfishController.AnglerState.Consuming)
|
||||||
{
|
{
|
||||||
if (qsbAngler.targetTransform.CompareTag("Player") || !caughtBody.CompareTag("Player"))
|
if (qsbAngler.TargetTransform.CompareTag("Player") || !caughtBody.CompareTag("Player"))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -331,7 +350,7 @@ namespace QSB.Anglerfish.Patches
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
qsbAngler.targetTransform = caughtBody.transform;
|
qsbAngler.TargetTransform = caughtBody.transform;
|
||||||
__instance._consumeStartTime = Time.time;
|
__instance._consumeStartTime = Time.time;
|
||||||
__instance.ChangeState(AnglerfishController.AnglerState.Consuming);
|
__instance.ChangeState(AnglerfishController.AnglerState.Consuming);
|
||||||
QSBEventManager.FireEvent(EventNames.QSBAnglerChangeState, qsbAngler);
|
QSBEventManager.FireEvent(EventNames.QSBAnglerChangeState, qsbAngler);
|
||||||
|
@ -10,11 +10,13 @@ namespace QSB.Anglerfish.TransformSync
|
|||||||
{
|
{
|
||||||
public override bool IsReady => QSBCore.WorldObjectsReady;
|
public override bool IsReady => QSBCore.WorldObjectsReady;
|
||||||
public override bool UseInterpolation => true;
|
public override bool UseInterpolation => true;
|
||||||
protected override OWRigidbody GetRigidbody() => _qsbAngler.AttachedObject._anglerBody;
|
|
||||||
|
|
||||||
private QSBAngler _qsbAngler;
|
private QSBAngler _qsbAngler;
|
||||||
private static readonly List<AnglerTransformSync> _instances = new List<AnglerTransformSync>();
|
private static readonly List<AnglerTransformSync> _instances = new List<AnglerTransformSync>();
|
||||||
|
|
||||||
|
protected override OWRigidbody GetRigidbody()
|
||||||
|
=> _qsbAngler.AttachedObject._anglerBody;
|
||||||
|
|
||||||
public override void Start()
|
public override void Start()
|
||||||
{
|
{
|
||||||
_instances.Add(this);
|
_instances.Add(this);
|
||||||
@ -27,18 +29,18 @@ namespace QSB.Anglerfish.TransformSync
|
|||||||
base.OnDestroy();
|
base.OnDestroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override float GetNetworkSendInterval() => 1 / 4f;
|
public override float GetNetworkSendInterval()
|
||||||
|
=> 1 / 4f;
|
||||||
|
|
||||||
protected override void Init()
|
protected override void Init()
|
||||||
{
|
{
|
||||||
_qsbAngler = QSBWorldSync.GetWorldFromId<QSBAngler>(_instances.IndexOf(this));
|
_qsbAngler = QSBWorldSync.GetWorldFromId<QSBAngler>(_instances.IndexOf(this));
|
||||||
_qsbAngler.transformSync = this;
|
_qsbAngler.TransformSync = this;
|
||||||
|
|
||||||
base.Init();
|
base.Init();
|
||||||
SetReferenceTransform(_qsbAngler.AttachedObject._brambleBody.transform);
|
SetReferenceTransform(_qsbAngler.AttachedObject._brambleBody.transform);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected override void OnRenderObject()
|
protected override void OnRenderObject()
|
||||||
{
|
{
|
||||||
base.OnRenderObject();
|
base.OnRenderObject();
|
||||||
|
@ -10,7 +10,11 @@ namespace QSB.Anglerfish.WorldObjects
|
|||||||
{
|
{
|
||||||
public class QSBAngler : WorldObject<AnglerfishController>
|
public class QSBAngler : WorldObject<AnglerfishController>
|
||||||
{
|
{
|
||||||
public AnglerTransformSync transformSync;
|
public AnglerTransformSync TransformSync;
|
||||||
|
public Transform TargetTransform;
|
||||||
|
public Vector3 TargetVelocity { get; private set; }
|
||||||
|
|
||||||
|
private Vector3 _lastTargetPosition;
|
||||||
|
|
||||||
public override void Init(AnglerfishController attachedObject, int id)
|
public override void Init(AnglerfishController attachedObject, int id)
|
||||||
{
|
{
|
||||||
@ -27,14 +31,14 @@ namespace QSB.Anglerfish.WorldObjects
|
|||||||
{
|
{
|
||||||
if (QSBCore.IsHost)
|
if (QSBCore.IsHost)
|
||||||
{
|
{
|
||||||
QNetworkServer.Destroy(transformSync.gameObject);
|
QNetworkServer.Destroy(TransformSync.gameObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void TransferAuthority(uint id)
|
public void TransferAuthority(uint id)
|
||||||
{
|
{
|
||||||
var conn = QNetworkServer.connections.First(x => x.GetPlayerId() == id);
|
var conn = QNetworkServer.connections.First(x => x.GetPlayerId() == id);
|
||||||
var identity = transformSync.NetIdentity;
|
var identity = TransformSync.NetIdentity;
|
||||||
|
|
||||||
if (identity.ClientAuthorityOwner == conn)
|
if (identity.ClientAuthorityOwner == conn)
|
||||||
{
|
{
|
||||||
@ -50,19 +54,14 @@ namespace QSB.Anglerfish.WorldObjects
|
|||||||
DebugLog.DebugWrite($"angler {ObjectId} - transferred authority to {id}");
|
DebugLog.DebugWrite($"angler {ObjectId} - transferred authority to {id}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public Transform targetTransform;
|
|
||||||
public Vector3 TargetVelocity { get; private set; }
|
|
||||||
private Vector3 _lastTargetPosition;
|
|
||||||
|
|
||||||
public void FixedUpdate()
|
public void FixedUpdate()
|
||||||
{
|
{
|
||||||
if (targetTransform == null)
|
if (TargetTransform == null)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
TargetVelocity = targetTransform.position - _lastTargetPosition;
|
TargetVelocity = TargetTransform.position - _lastTargetPosition;
|
||||||
_lastTargetPosition = targetTransform.position;
|
_lastTargetPosition = TargetTransform.position;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user