static public GameObject EmitDebugLine(string name, Vector3f start, Vector3f end, float diameter, Colorf startColor, Colorf endColor, GameObject parent = null, bool bIsInWorldPos = true) { if (FPlatform.InMainThread() == false) { ThreadMailbox.PostToMainThread(() => { DebugUtil.EmitDebugLine(name, start, end, diameter, startColor, endColor, parent, bIsInWorldPos); }); return(null); } GameObject line = new GameObject(); line.SetName(name); line.transform.position = (bIsInWorldPos) ? start : Vector3f.Zero; line.AddComponent <LineRenderer>(); LineRenderer lr = line.GetComponent <LineRenderer>(); lr.material = MaterialUtil.CreateParticlesMaterial(); lr.startColor = startColor; lr.endColor = endColor; lr.startWidth = lr.endWidth = diameter; lr.SetPosition(0, start); lr.SetPosition(1, end); if (parent != null) { lr.useWorldSpace = bIsInWorldPos; line.transform.SetParent(parent.transform, bIsInWorldPos); } return(line); }
static public GameObject EmitDebugCurve(string name, Vector3d[] curve, bool bClosed, float diameter, Colorf startColor, Colorf endColor, GameObject parent = null, bool bIsInWorldPos = true) { if (FPlatform.InMainThread() == false) { ThreadMailbox.PostToMainThread(() => { DebugUtil.EmitDebugCurve(name, curve, bClosed, diameter, startColor, endColor, parent, bIsInWorldPos); }); return(null); } GameObject line = new GameObject(); line.SetName(name); line.AddComponent <LineRenderer> (); LineRenderer lr = line.GetComponent <LineRenderer> (); lr.material = MaterialUtil.CreateParticlesMaterial(); lr.startColor = startColor; lr.endColor = endColor; lr.startWidth = lr.endWidth = diameter; Vector3[] verts = new Vector3[curve.Length]; for (int i = 0; i < curve.Length; ++i) { verts[i] = (Vector3)curve[i]; } lr.positionCount = curve.Length; lr.SetPositions(verts); lr.loop = bClosed; lr.useWorldSpace = (parent == null && bIsInWorldPos); if (parent != null) { line.transform.SetParent(parent.transform, bIsInWorldPos); } return(line); }