Files
2026-06-04 11:42:34 +02:00

181 lines
5.6 KiB
C#

using System;
using System.ComponentModel;
namespace UnityEngine.Networking
{
// Token: 0x02000063 RID: 99
[DisallowMultipleComponent]
[AddComponentMenu("Network/NetworkTransformVisualizer")]
[RequireComponent(typeof(NetworkTransform))]
[EditorBrowsable(EditorBrowsableState.Never)]
public class NetworkTransformVisualizer : NetworkBehaviour
{
// Token: 0x170000D9 RID: 217
// (get) Token: 0x060004E7 RID: 1255 RVA: 0x0001C814 File Offset: 0x0001AA14
// (set) Token: 0x060004E8 RID: 1256 RVA: 0x0001C82F File Offset: 0x0001AA2F
public GameObject visualizerPrefab
{
get
{
return this.m_VisualizerPrefab;
}
set
{
this.m_VisualizerPrefab = value;
}
}
// Token: 0x060004E9 RID: 1257 RVA: 0x0001C83C File Offset: 0x0001AA3C
public override void OnStartClient()
{
if (this.m_VisualizerPrefab != null)
{
this.m_NetworkTransform = base.GetComponent<NetworkTransform>();
NetworkTransformVisualizer.CreateLineMaterial();
this.m_Visualizer = Object.Instantiate<GameObject>(this.m_VisualizerPrefab, base.transform.position, Quaternion.identity);
}
}
// Token: 0x060004EA RID: 1258 RVA: 0x0001C890 File Offset: 0x0001AA90
public override void OnStartLocalPlayer()
{
if (!(this.m_Visualizer == null))
{
if (this.m_NetworkTransform.localPlayerAuthority || base.isServer)
{
Object.Destroy(this.m_Visualizer);
}
}
}
// Token: 0x060004EB RID: 1259 RVA: 0x0001C8DC File Offset: 0x0001AADC
private void OnDestroy()
{
if (this.m_Visualizer != null)
{
Object.Destroy(this.m_Visualizer);
}
}
// Token: 0x060004EC RID: 1260 RVA: 0x0001C900 File Offset: 0x0001AB00
[ClientCallback]
private void FixedUpdate()
{
if (!(this.m_Visualizer == null))
{
if (NetworkServer.active || NetworkClient.active)
{
if (base.isServer || base.isClient)
{
if (!base.hasAuthority || !this.m_NetworkTransform.localPlayerAuthority)
{
this.m_Visualizer.transform.position = this.m_NetworkTransform.targetSyncPosition;
if (this.m_NetworkTransform.rigidbody3D != null && this.m_Visualizer.GetComponent<Rigidbody>() != null)
{
this.m_Visualizer.GetComponent<Rigidbody>().velocity = this.m_NetworkTransform.targetSyncVelocity;
}
if (this.m_NetworkTransform.rigidbody2D != null && this.m_Visualizer.GetComponent<Rigidbody2D>() != null)
{
this.m_Visualizer.GetComponent<Rigidbody2D>().velocity = this.m_NetworkTransform.targetSyncVelocity;
}
Quaternion quaternion = Quaternion.identity;
if (this.m_NetworkTransform.rigidbody3D != null)
{
quaternion = this.m_NetworkTransform.targetSyncRotation3D;
}
if (this.m_NetworkTransform.rigidbody2D != null)
{
quaternion = Quaternion.Euler(0f, 0f, this.m_NetworkTransform.targetSyncRotation2D);
}
this.m_Visualizer.transform.rotation = quaternion;
}
}
}
}
}
// Token: 0x060004ED RID: 1261 RVA: 0x0001CA98 File Offset: 0x0001AC98
private void OnRenderObject()
{
if (!(this.m_Visualizer == null))
{
if (!this.m_NetworkTransform.localPlayerAuthority || !base.hasAuthority)
{
if (this.m_NetworkTransform.lastSyncTime != 0f)
{
NetworkTransformVisualizer.s_LineMaterial.SetPass(0);
GL.Begin(1);
GL.Color(Color.white);
GL.Vertex3(base.transform.position.x, base.transform.position.y, base.transform.position.z);
GL.Vertex3(this.m_NetworkTransform.targetSyncPosition.x, this.m_NetworkTransform.targetSyncPosition.y, this.m_NetworkTransform.targetSyncPosition.z);
GL.End();
this.DrawRotationInterpolation();
}
}
}
}
// Token: 0x060004EE RID: 1262 RVA: 0x0001CB9C File Offset: 0x0001AD9C
private void DrawRotationInterpolation()
{
Quaternion quaternion = Quaternion.identity;
if (this.m_NetworkTransform.rigidbody3D != null)
{
quaternion = this.m_NetworkTransform.targetSyncRotation3D;
}
if (this.m_NetworkTransform.rigidbody2D != null)
{
quaternion = Quaternion.Euler(0f, 0f, this.m_NetworkTransform.targetSyncRotation2D);
}
if (!(quaternion == Quaternion.identity))
{
GL.Begin(1);
GL.Color(Color.yellow);
GL.Vertex3(base.transform.position.x, base.transform.position.y, base.transform.position.z);
Vector3 vector = base.transform.position + base.transform.right;
GL.Vertex3(vector.x, vector.y, vector.z);
GL.End();
GL.Begin(1);
GL.Color(Color.green);
GL.Vertex3(base.transform.position.x, base.transform.position.y, base.transform.position.z);
Vector3 vector2 = quaternion * Vector3.right;
Vector3 vector3 = base.transform.position + vector2;
GL.Vertex3(vector3.x, vector3.y, vector3.z);
GL.End();
}
}
// Token: 0x060004EF RID: 1263 RVA: 0x0001CD38 File Offset: 0x0001AF38
private static void CreateLineMaterial()
{
if (!NetworkTransformVisualizer.s_LineMaterial)
{
Shader shader = Shader.Find("Hidden/Internal-Colored");
if (!shader)
{
Debug.LogWarning("Could not find Colored builtin shader");
}
else
{
NetworkTransformVisualizer.s_LineMaterial = new Material(shader);
NetworkTransformVisualizer.s_LineMaterial.hideFlags = HideFlags.HideAndDontSave;
NetworkTransformVisualizer.s_LineMaterial.SetInt("_ZWrite", 0);
}
}
}
// Token: 0x04000226 RID: 550
[SerializeField]
private GameObject m_VisualizerPrefab;
// Token: 0x04000227 RID: 551
private NetworkTransform m_NetworkTransform;
// Token: 0x04000228 RID: 552
private GameObject m_Visualizer;
// Token: 0x04000229 RID: 553
private static Material s_LineMaterial;
}
}