static void CreateBezPatch() { Vector3 pos = Vector3.zero; if (UnityEditor.SceneView.lastActiveSceneView != null) { pos = UnityEditor.SceneView.lastActiveSceneView.pivot; } GameObject go = new GameObject("Bez Patch"); MeshFilter mf = go.AddComponent <MeshFilter>(); mf.sharedMesh = new Mesh(); MeshRenderer mr = go.AddComponent <MeshRenderer>(); Material[] mats = new Material[1]; mr.sharedMaterials = mats; MegaBezPatch pm = go.AddComponent <MegaBezPatch>(); pm.mesh = mf.sharedMesh; go.transform.position = pos; Selection.activeObject = go; pm.Rebuild(); // Add the first warp }
public override void OnInspectorGUI() { MegaBezPatch mod = (MegaBezPatch)target; #if !UNITY_5 && !UNITY_2017 && !UNITY_2018 && !UNITY_2019 && !UNITY_2020 EditorGUIUtility.LookLikeControls(); #endif float Width = EditorGUILayout.FloatField("Width", mod.Width); if (Width != mod.Width) { mod.AdjustLattice(Width, mod.Height); } float Height = EditorGUILayout.FloatField("Height", mod.Height); if (Height != mod.Height) { mod.AdjustLattice(mod.Width, Height); } mod.WidthSegs = EditorGUILayout.IntField("Width Segs", mod.WidthSegs); mod.HeightSegs = EditorGUILayout.IntField("Height Segs", mod.HeightSegs); mod.recalcBounds = EditorGUILayout.Toggle("Recalc Bounds", mod.recalcBounds); //mod.recalcNormals = EditorGUILayout.Toggle("Recalc Normals", mod.recalcNormals); mod.recalcTangents = EditorGUILayout.Toggle("Recalc Tangents", mod.recalcTangents); mod.GenUVs = EditorGUILayout.BeginToggleGroup("Gen UVs", mod.GenUVs); mod.UVOffset = EditorGUILayout.Vector2Field("UV Offset", mod.UVOffset); mod.UVScale = EditorGUILayout.Vector2Field("UV Scale", mod.UVScale); EditorGUILayout.EndToggleGroup(); mod.showgizmos = EditorGUILayout.Toggle("Show Gizmos", mod.showgizmos); mod.showlabels = EditorGUILayout.Toggle("Show Labels", mod.showlabels); mod.latticecol = EditorGUILayout.ColorField("Lattice Color", mod.latticecol); mod.positionhandles = EditorGUILayout.Toggle("Position Handles", mod.positionhandles); mod.handlesize = EditorGUILayout.FloatField("Handle Size", mod.handlesize); mod.snap = EditorGUILayout.Vector2Field("Snap", mod.snap); mod.align = EditorGUILayout.Toggle("Align", mod.align); //mod.scale = EditorGUILayout.FloatField("Scale", mod.scale); mod.showlatticepoints = EditorGUILayout.Foldout(mod.showlatticepoints, "Lattice Points"); mod.switchtime = EditorGUILayout.FloatField("Switch Time", mod.switchtime); mod.animateWarps = EditorGUILayout.Toggle("Animate Warps", mod.animateWarps); if (mod.showlatticepoints) { mod.p11 = EditorGUILayout.Vector2Field("p11", mod.p11); mod.p12 = EditorGUILayout.Vector2Field("p12", mod.p12); mod.p13 = EditorGUILayout.Vector2Field("p13", mod.p13); mod.p14 = EditorGUILayout.Vector2Field("p14", mod.p14); mod.p21 = EditorGUILayout.Vector2Field("p21", mod.p21); mod.p22 = EditorGUILayout.Vector2Field("p22", mod.p22); mod.p23 = EditorGUILayout.Vector2Field("p23", mod.p23); mod.p24 = EditorGUILayout.Vector2Field("p24", mod.p24); mod.p31 = EditorGUILayout.Vector2Field("p31", mod.p31); mod.p32 = EditorGUILayout.Vector2Field("p32", mod.p32); mod.p33 = EditorGUILayout.Vector2Field("p33", mod.p33); mod.p34 = EditorGUILayout.Vector2Field("p34", mod.p34); mod.p41 = EditorGUILayout.Vector2Field("p41", mod.p41); mod.p42 = EditorGUILayout.Vector2Field("p42", mod.p42); mod.p43 = EditorGUILayout.Vector2Field("p43", mod.p43); mod.p44 = EditorGUILayout.Vector2Field("p44", mod.p44); } mod.destwarp = EditorGUILayout.IntField("Dest Warp", mod.destwarp); int currentwarp = EditorGUILayout.IntSlider("Warp", mod.currentwarp, 0, mod.warps.Count - 1); if (currentwarp != mod.currentwarp) { mod.SetWarp(currentwarp); } //mod.useWarpValue = EditorGUILayout.BeginToggleGroup("Use Warp Value", mod.useWarpValue); //mod.warpValue = EditorGUILayout.Slider("Warp Value", mod.warpValue, 0.0f, (float)(mod.warps.Count - 1)); //EditorGUILayout.EndToggleGroup(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Add Warp")) { mod.AddWarp(); } if (GUILayout.Button("Reset")) { mod.Reset(); } EditorGUILayout.EndHorizontal(); for (int i = 0; i < mod.warps.Count; i++) { EditorGUILayout.BeginHorizontal(); mod.warps[i].name = EditorGUILayout.TextField("", mod.warps[i].name); //mod.meshes[i].Enabled = EditorGUILayout.Toggle("", mod.meshes[i].Enabled, GUILayout.MaxWidth(20)); if (GUILayout.Button("Set", GUILayout.MaxWidth(50))) { mod.SetWarp(i); EditorUtility.SetDirty(mod); } if (GUILayout.Button("Update", GUILayout.MaxWidth(50))) { mod.UpdateWarp(i); } if (GUILayout.Button("Delete", GUILayout.MaxWidth(50))) { mod.warps.RemoveAt(i); } EditorGUILayout.EndHorizontal(); } if (GUI.changed) //rebuild ) { mod.Rebuild(); EditorUtility.SetDirty(target); } }