static public void SwapInf(MegaScatter mod, int t1, int t2) { if (t1 >= 0 && t1 < mod.layers.Count && t2 >= 0 && t2 < mod.layers.Count && t1 != t2) { MegaScatterLayer inf = mod.layers[t1]; mod.layers.RemoveAt(t1); mod.layers.Insert(t2, inf); //EditorUtility.SetDirty(target); } }
static public void DisplayGizmo(MegaScatter mod, Matrix4x4 tm) { if (mod && mod.displaygizmo && mod.layers.Count > 0) { Handles.matrix = tm; Handles.color = Color.green; if (mod.currentEdit >= 0) { Vector3 p1 = Vector3.zero; Vector3 p2 = Vector3.zero; Vector3 p3 = Vector3.zero; Vector3 p4 = Vector3.zero; p1.x = mod.totalbounds.min.x; p1.z = mod.totalbounds.min.z; p2.x = mod.totalbounds.max.x; p2.z = mod.totalbounds.min.z; p3.x = mod.totalbounds.max.x; p3.z = mod.totalbounds.max.z; p4.x = mod.totalbounds.min.x; p4.z = mod.totalbounds.max.z; Handles.DrawLine(p1, p2); Handles.DrawLine(p2, p3); Handles.DrawLine(p3, p4); Handles.DrawLine(p4, p1); MegaScatterLayer inf = mod.layers[mod.currentEdit]; Handles.color = disccol; //Handles.CircleCap(0, Vector3.zero, Quaternion.identity, inf.radius * inf.scale * mod.globalScale.x); Handles.matrix = mod.transform.localToWorldMatrix; Handles.DrawSolidDisc(Vector3.zero, Vector3.up, inf.radius * inf.scale * mod.globalScale.x); if (inf.useheight) { Handles.matrix = Matrix4x4.identity; //Vector3 hp = Vector3.zero; Vector3[] pv = new Vector3[4]; //Matrix4x4 tm = mod.shape.transform.localToWorldMatrix; pv[0] = tm.MultiplyPoint3x4(p1); pv[1] = tm.MultiplyPoint3x4(p2); pv[2] = tm.MultiplyPoint3x4(p3); pv[3] = tm.MultiplyPoint3x4(p4); //hp = inf. pv[0].y = pv[1].y = pv[2].y = pv[3].y = inf.minheight; Handles.color = Color.grey; Color c = new Color(1, 1, 1, 0.25f); //Handles.DrawSolidRectangleWithOutline(pv, c, Color.blue); //DisplayQuad(pv, tm); #if true GL.PushMatrix(); GL.Color(c); GL.Begin(GL.QUADS); GL.Vertex(pv[0]); GL.Vertex(pv[1]); GL.Vertex(pv[2]); GL.Vertex(pv[3]); GL.End(); GL.PopMatrix(); #endif Handles.color = Color.blue; Handles.DrawPolyLine(pv); pv[0].y = pv[1].y = pv[2].y = pv[3].y = inf.maxheight; //p1.y = p2.y = p3.y = p4.y = inf.maxheight; //Handles.color = Color.red; //Handles.DrawLine(p1, p2); //Handles.DrawLine(p2, p3); //Handles.DrawLine(p3, p4); //Handles.DrawLine(p4, p1); //Handles.DrawSolidRectangleWithOutline(pv, c, Color.red); #if true GL.PushMatrix(); GL.Color(c); GL.Begin(GL.QUADS); GL.Vertex(pv[0]); GL.Vertex(pv[1]); GL.Vertex(pv[2]); GL.Vertex(pv[3]); GL.End(); GL.PopMatrix(); #endif Handles.color = Color.red; Handles.DrawPolyLine(pv); } } } }