mirror of
https://github.com/GTA-ASM/SanAndreasUnity
synced 2024-11-12 23:37:07 +00:00
add visualization
This commit is contained in:
parent
1be238b095
commit
4146b0a65d
1 changed files with 42 additions and 0 deletions
|
@ -27,6 +27,12 @@ namespace SanAndreasUnity.Net
|
||||||
|
|
||||||
public bool useRigidBody;
|
public bool useRigidBody;
|
||||||
|
|
||||||
|
public bool visualize;
|
||||||
|
|
||||||
|
public ushort maxNumVisualizations;
|
||||||
|
|
||||||
|
public float visualizationScale;
|
||||||
|
|
||||||
public static Parameters Default => new Parameters
|
public static Parameters Default => new Parameters
|
||||||
{
|
{
|
||||||
useSmoothDeltaTime = true,
|
useSmoothDeltaTime = true,
|
||||||
|
@ -34,6 +40,9 @@ namespace SanAndreasUnity.Net
|
||||||
constantVelocityMultiplier = 1f,
|
constantVelocityMultiplier = 1f,
|
||||||
lerpFactor = 30f,
|
lerpFactor = 30f,
|
||||||
useRigidBody = true,
|
useRigidBody = true,
|
||||||
|
visualize = false,
|
||||||
|
maxNumVisualizations = 10,
|
||||||
|
visualizationScale = 0.2f,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,6 +81,8 @@ namespace SanAndreasUnity.Net
|
||||||
|
|
||||||
private readonly NetworkBehaviour m_networkBehaviour;
|
private readonly NetworkBehaviour m_networkBehaviour;
|
||||||
|
|
||||||
|
private readonly Queue<GameObject> m_visualizationQueue = new Queue<GameObject>();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public TransformSyncer(Transform tr, Parameters parameters, NetworkBehaviour networkBehaviour)
|
public TransformSyncer(Transform tr, Parameters parameters, NetworkBehaviour networkBehaviour)
|
||||||
|
@ -119,6 +130,37 @@ namespace SanAndreasUnity.Net
|
||||||
syncData.CalculatedAngularVelocityMagnitude = Quaternion.Angle(syncData.Rotation, m_currentSyncData.Rotation) / m_networkBehaviour.syncInterval;
|
syncData.CalculatedAngularVelocityMagnitude = Quaternion.Angle(syncData.Rotation, m_currentSyncData.Rotation) / m_networkBehaviour.syncInterval;
|
||||||
|
|
||||||
m_nextSyncData = syncData;
|
m_nextSyncData = syncData;
|
||||||
|
|
||||||
|
this.AddToVisualization(syncData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void AddToVisualization(SyncData syncData)
|
||||||
|
{
|
||||||
|
if (!m_parameters.visualize || m_parameters.maxNumVisualizations <= 0)
|
||||||
|
{
|
||||||
|
while (m_visualizationQueue.Count > 0)
|
||||||
|
Object.Destroy(m_visualizationQueue.Dequeue());
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (m_visualizationQueue.Count >= m_parameters.maxNumVisualizations)
|
||||||
|
Object.Destroy(m_visualizationQueue.Dequeue());
|
||||||
|
|
||||||
|
var newGo = GameObject.CreatePrimitive(PrimitiveType.Cube);
|
||||||
|
newGo.transform.SetPositionAndRotation(syncData.Position, syncData.Rotation);
|
||||||
|
newGo.transform.localScale = Vector3.one * m_parameters.visualizationScale;
|
||||||
|
Object.DestroyImmediate(newGo.GetComponent<Collider>());
|
||||||
|
|
||||||
|
m_visualizationQueue.Enqueue(newGo);
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
foreach (var go in m_visualizationQueue)
|
||||||
|
{
|
||||||
|
go.name = $"{m_networkBehaviour.name} - sync visualization {i}";
|
||||||
|
go.GetComponent<Renderer>().material.color = Color.Lerp(Color.white, Color.black, i / (float)m_visualizationQueue.Count);
|
||||||
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue