This commit is contained in:
JohnCorby 2022-02-25 01:36:15 -08:00
parent 48c356e4c1
commit 005f6886ab

View File

@ -6,6 +6,7 @@ using QSB.WorldSync;
using System; using System;
using System.Linq; using System.Linq;
using UnityEngine; using UnityEngine;
using Gizmos = Popcron.Gizmos;
namespace QSB.Syncs; namespace QSB.Syncs;
/* /*
@ -259,11 +260,19 @@ public abstract class SyncBase : QSBNetworkTransform
base.Update(); base.Update();
} }
private Vector3 _prevSmoothPosition;
private void Interpolate() private void Interpolate()
{ {
if (Vector3.Distance(SmoothPosition, _prevSmoothPosition) > DistanceChangeThreshold)
{
DebugLog.DebugWrite($"{this} POS teleport (change = {Vector3.Distance(SmoothPosition, _prevSmoothPosition):F4}");
}
var distance = Vector3.Distance(SmoothPosition, transform.position); var distance = Vector3.Distance(SmoothPosition, transform.position);
if (Mathf.Abs(distance - _prevDistance) > DistanceChangeThreshold) if (Mathf.Abs(distance - _prevDistance) > DistanceChangeThreshold)
{ {
DebugLog.DebugWrite($"{this} DIST teleport (change = {Mathf.Abs(distance - _prevDistance):F4}");
SmoothPosition = transform.position; SmoothPosition = transform.position;
SmoothRotation = transform.rotation; SmoothRotation = transform.rotation;
} }
@ -274,6 +283,7 @@ public abstract class SyncBase : QSBNetworkTransform
} }
_prevDistance = distance; _prevDistance = distance;
_prevSmoothPosition = SmoothPosition;
} }
public virtual void SetReferenceTransform(Transform referenceTransform) public virtual void SetReferenceTransform(Transform referenceTransform)
@ -283,6 +293,8 @@ public abstract class SyncBase : QSBNetworkTransform
return; return;
} }
DebugLog.DebugWrite($"{this} sector {ReferenceTransform} -> {referenceTransform}");
ReferenceTransform = referenceTransform; ReferenceTransform = referenceTransform;
if (!hasAuthority && UseInterpolation && AttachedTransform) if (!hasAuthority && UseInterpolation && AttachedTransform)
@ -291,13 +303,13 @@ public abstract class SyncBase : QSBNetworkTransform
{ {
AttachedTransform.parent = ReferenceTransform; AttachedTransform.parent = ReferenceTransform;
AttachedTransform.localScale = Vector3.one; AttachedTransform.localScale = Vector3.one;
SmoothPosition = AttachedTransform.localPosition; // SmoothPosition = AttachedTransform.localPosition;
SmoothRotation = AttachedTransform.localRotation; // SmoothRotation = AttachedTransform.localRotation;
} }
else else
{ {
SmoothPosition = ReferenceTransform.ToRelPos(AttachedTransform.position); // SmoothPosition = ReferenceTransform.ToRelPos(AttachedTransform.position);
SmoothRotation = ReferenceTransform.ToRelRot(AttachedTransform.rotation); // SmoothRotation = ReferenceTransform.ToRelRot(AttachedTransform.rotation);
} }
} }
} }
@ -318,11 +330,11 @@ public abstract class SyncBase : QSBNetworkTransform
* Cyan Line = Connection between Green cube and reference transform * Cyan Line = Connection between Green cube and reference transform
*/ */
Popcron.Gizmos.Cube(ReferenceTransform.FromRelPos(transform.position), ReferenceTransform.FromRelRot(transform.rotation), Vector3.one / 8, Color.red); Gizmos.Cube(ReferenceTransform.FromRelPos(transform.position), ReferenceTransform.FromRelRot(transform.rotation), Vector3.one / 8, Color.red);
Popcron.Gizmos.Line(ReferenceTransform.FromRelPos(transform.position), AttachedTransform.transform.position, Color.red); Gizmos.Line(ReferenceTransform.FromRelPos(transform.position), AttachedTransform.transform.position, Color.red);
Popcron.Gizmos.Cube(AttachedTransform.transform.position, AttachedTransform.transform.rotation, Vector3.one / 6, Color.green); Gizmos.Cube(AttachedTransform.transform.position, AttachedTransform.transform.rotation, Vector3.one / 6, Color.green);
Popcron.Gizmos.Cube(ReferenceTransform.position, ReferenceTransform.rotation, Vector3.one / 8, Color.magenta); Gizmos.Cube(ReferenceTransform.position, ReferenceTransform.rotation, Vector3.one / 8, Color.magenta);
Popcron.Gizmos.Line(AttachedTransform.transform.position, ReferenceTransform.position, Color.cyan); Gizmos.Line(AttachedTransform.transform.position, ReferenceTransform.position, Color.cyan);
} }
private void OnGUI() private void OnGUI()
@ -337,4 +349,4 @@ public abstract class SyncBase : QSBNetworkTransform
DebugGUI.DrawLabel(AttachedTransform.transform, ToString()); DebugGUI.DrawLabel(AttachedTransform.transform, ToString());
} }
} }