override public void OnInspectorGUI() { Slicer2DController script = target as Slicer2DController; script.sliceType = (Slicer2DController.SliceType)EditorGUILayout.EnumPopup("Slicer Type", script.sliceType); script.sliceLayer.SetLayerType((Slice2DLayerType)EditorGUILayout.EnumPopup("Slicer Layer", script.sliceLayer.GetLayerType())); EditorGUI.indentLevel = EditorGUI.indentLevel + 2; if (script.sliceLayer.GetLayerType() == Slice2DLayerType.Selected) { for (int i = 0; i < 8; i++) { script.sliceLayer.SetLayer(i, EditorGUILayout.Toggle("Layer " + (i + 1), script.sliceLayer.GetLayerState(i))); } } EditorGUI.indentLevel = EditorGUI.indentLevel - 2; visualsFoldout = EditorGUILayout.Foldout(visualsFoldout, "Visuals"); if (visualsFoldout) { EditorVisuals(script.visuals); } SliceTypesUpdate(script); DrawUIBlocking(script); script.input.multiTouch = EditorGUILayout.Toggle("Multi Touch", script.input.multiTouch); }
// Ball vs Slice Collision public void BallToSlicerCollision() { if (Math2D.Circle.IntersectLine(Slicer2DController.Get().linearControllerObject.GetPair(0).ToPair2D(), new Vector2D(transform.position), radius)) { ThinSlicerParticles.Create(); // Remove Current Slicing Process Slicer2DController.Get().complexControllerObject.pointsList[0].Clear(); } }
static public void Create() { if (Slicer2DController.Get().linearControllerObject.startedSlice == false) { return; } Vector2List points = Slicer2DLinearControllerObject.GetLinearVertices(Slicer2DController.Get().linearControllerObject.GetPair(0), Slicer2DController.Get().linearControllerObject.minVertexDistance); if (points.Count() < 3) { return; } Max2DParticles.CreateSliceParticles(points.ToVector2DList()); float size = 0.5f; Vector2 f = points.First(); f.x -= size / 2; f.y -= size / 2; List <Vector2D> list = new List <Vector2D>(); list.Add(new Vector2D(f.x, f.y)); list.Add(new Vector2D(f.x + size, f.y)); list.Add(new Vector2D(f.x + size, f.y + size)); list.Add(new Vector2D(f.x, f.y + size)); list.Add(new Vector2D(f.x, f.y)); Max2DParticles.CreateSliceParticles(list).stripped = false; f = points.Last(); f.x -= size / 2; f.y -= size / 2; list = new List <Vector2D>(); list.Add(new Vector2D(f.x, f.y)); list.Add(new Vector2D(f.x + size, f.y)); list.Add(new Vector2D(f.x + size, f.y + size)); list.Add(new Vector2D(f.x, f.y + size)); list.Add(new Vector2D(f.x, f.y)); Max2DParticles.CreateSliceParticles(list).stripped = false; }
// Triggered Before Every Slice // Should we perform slice? Is it succesful according our rules? bool OnSlice(Slice2D sliceResult) { Polygon2D CutObject = ThinSliceHelper.GetSmallestPolygon(sliceResult); // Forbidden double slices // Shouldn't be possible with linear slicer if (sliceResult.GetPolygons().Count > 2) { return(false); } // Add Particles if slice is succesful if (CutObject == null) { ThinSlicerParticles.Create(); Slicer2DController.Get().complexControllerObject.pointsList[0].Clear(); return(false); } return(true); }
void SliceTypesUpdate(Slicer2DController script) { switch (script.sliceType) { case Slicer2DController.SliceType.Linear: foldout = EditorGUILayout.Foldout(foldout, "Linear Slicer"); if (foldout) { EditorLinear(script.linearControllerObject); } break; case Slicer2DController.SliceType.LinearCut: foldout = EditorGUILayout.Foldout(foldout, "Linear Cut Slicer"); if (foldout) { EditorLinearCut(script.linearCutControlelrObject); } break; case Slicer2DController.SliceType.Complex: foldout = EditorGUILayout.Foldout(foldout, "Complex Slicer"); if (foldout) { EditorComplex(script.complexControllerObject); } break; case Slicer2DController.SliceType.ComplexCut: foldout = EditorGUILayout.Foldout(foldout, "Complex Cut Slicer"); if (foldout) { EditorComplexCut(script.complexCutControllerObject); } break; case Slicer2DController.SliceType.ComplexClick: foldout = EditorGUILayout.Foldout(foldout, "Complex Click"); if (foldout) { EditorComplexClick(script.complexClickControllerObject); } break; case Slicer2DController.SliceType.Point: foldout = EditorGUILayout.Foldout(foldout, "Point Slicer"); if (foldout) { EditorPoint(script.pointControllerObject); } break; case Slicer2DController.SliceType.Polygon: foldout = EditorGUILayout.Foldout(foldout, "Polygon Slicer"); if (foldout) { EditorPolygon(script.polygonControllerObject); } break; case Slicer2DController.SliceType.ComplexTrail: foldout = EditorGUILayout.Foldout(foldout, "Complex Trail Slicer"); if (foldout) { EditorComplexTrail(script.complexTrailControllerObject); } break; case Slicer2DController.SliceType.LinearTrail: foldout = EditorGUILayout.Foldout(foldout, "Linear Trail Slicer"); if (foldout) { EditorLinearTrail(script.linearTrailControllerObject); } break; case Slicer2DController.SliceType.ComplexTracked: foldout = EditorGUILayout.Foldout(foldout, "Complex Tracked Slicer"); if (foldout) { EditorComplexTracked(script.complexTrackedControllerObject); } break; case Slicer2DController.SliceType.Explode: foldout = EditorGUILayout.Foldout(foldout, "Explode By Point"); if (foldout) { EditorExplode(script.explodeControllerObject); } break; case Slicer2DController.SliceType.Create: foldout = EditorGUILayout.Foldout(foldout, "Polygon Creator"); if (foldout) { EditorCreate(script.createControllerObject); } break; } }
void DrawUIBlocking(Slicer2DController script) { EditorGUI.indentLevel = EditorGUI.indentLevel + 1; script.UIBlocking = EditorGUILayout.Toggle("UI Blocking", script.UIBlocking); EditorGUI.indentLevel = EditorGUI.indentLevel - 1; }
public void Awake() { instance = this; }
void Start() { dropdown = GetComponent <Dropdown>(); controller = Slicer2DController.Get(); }