181 lines
5.6 KiB
C#
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;
|
|
}
|
|
}
|