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);
        }
Exemple #2
0
        // 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;
        }
Exemple #4
0
        // 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;
 }
Exemple #8
0
 void Start()
 {
     dropdown   = GetComponent <Dropdown>();
     controller = Slicer2DController.Get();
 }