// Checking mouse press and release events to get linear slices based on input
    public void LateUpdate()
    {
        for (int id = 0; id < 10; id++)
        {
            Vector2D pos = new Vector2D(input.GetInputPosition(id));

            if (input.GetInputClicked(id))
            {
                linearPair[id].A.Set(pos);
            }

            if (input.GetInputPressed(id))
            {
                linearPair[id].B.Set(pos);
            }

            if (input.GetInputReleased(id))
            {
                if (input.GetSlicingEnabled(id))
                {
                    LinearSlice(linearPair[id]);
                }
            }

            if (input.GetInputPressed(id) == false)
            {
                linearPair[id].A.Set(pos);
                linearPair[id].B.Set(pos);
            }
        }
    }
示例#2
0
        // Checking mouse press and release events to get linear slices based on input
        public void LateUpdate()
        {
            for (int id = 0; id < 10; id++)
            {
                Vector2 pos = input.GetInputPosition(id);

                if (input.GetInputClicked(id))
                {
                    linearPair[id].a = pos;
                }

                if (input.GetInputPressed(id))
                {
                    linearPair[id].b = pos;
                }

                if (input.GetInputReleased(id))
                {
                    if (input.GetSlicingEnabled(id))
                    {
                        LinearSlice(linearPair[id].ToPair2D());
                    }
                }

                if (input.GetInputPressed(id) == false)
                {
                    linearPair[id].a = pos;
                    linearPair[id].b = pos;
                }
            }
        }
    // Checking mouse press and release events to get linear slices based on input
    public void LateUpdate()
    {
        for (int id = 0; id < 10; id++)
        {
            Vector2D pos = new Vector2D(input.GetInputPosition(id));

            if (input.GetInputClicked(id))
            {
                points[id].Clear();
                points[id].Add(pos);
            }

            if (input.GetInputPressed(id))
            {
                Vector2D posMove = new Vector2D(points[id].Last());
                while ((Vector2D.Distance(posMove, pos) > minVertexDistance))
                {
                    float direction = (float)Vector2D.Atan2(pos, posMove);
                    posMove.Push(direction, minVertexDistance);
                    points[id].Add(new Vector2D(posMove));
                }
            }

            if (input.GetInputReleased(id))
            {
                Slicer2D.complexSliceType = complexSliceType;

                if (input.GetSlicingEnabled(id))
                {
                    ComplexSlice(points[id]);
                }

                points[id].Clear();
            }

            if (input.GetInputPressed(id) == false)
            {
                if (points[id].Count > 0)
                {
                    points[id].Clear();
                }
            }
        }
    }
        public void LateUpdate()
        {
            Vector2 pos = input.GetInputPosition();

            if (input.GetInputClicked())
            {
                points.Clear();
                points.Add(pos);
            }

            if (input.GetInputPressed())
            {
                Vector2 posMove = points.Last();
                while ((Vector2.Distance(posMove, pos) > minVertexDistance))
                {
                    float direction = pos.Atan2(posMove);
                    posMove = posMove.Push(direction, minVertexDistance);
                    points.Add(posMove);
                }
            }

            if (input.GetInputReleased())
            {
                if (input.GetSlicingEnabled())
                {
                    ComplexMerge(points.ToVector2DList());
                }

                points.Clear();
            }

            if (input.GetInputPressed() == false)
            {
                if (points.Count() > 0)
                {
                    points.Clear();
                }
            }
        }
示例#5
0
    public void Update()
    {
        input.Update();

        if (visuals.drawSlicer == false)
        {
            return;
        }

        if (linearPair.A.ToVector2() == Vector2.zero && linearPair.B.ToVector2() == Vector2.zero)
        {
            return;
        }

        visuals.Clear();
        visuals.GenerateLinearMesh(linearPair, transform);
        visuals.Draw();


        if (target != null)
        {
            Polygon2D poly = target.shape.GetWorld();

            int pointIDA = ((verticeID - 1) + poly.pointsList.Count) % poly.pointsList.Count;
            int pointIDB = verticeID;
            int pointIDC = (verticeID + 1) % poly.pointsList.Count;

            Vector2 pointA = poly.pointsList[pointIDA].ToVector2();
            Vector2 pointB = poly.pointsList[pointIDB].ToVector2();
            Vector2 pointC = poly.pointsList[pointIDC].ToVector2();

            double angle = Math2D.FindAngle(pointA, pointB, pointC);

            Vector2D offset = new Vector2D(pointB);

            double angleZero = Vector2D.Atan2(new Vector2D(pointA), new Vector2D(pointB));

            Debug.Log(angle * Mathf.Rad2Deg);

            offset.Push(-angle / 2 + angleZero, 0.5f);

            linearPair.A = offset;
        }

        if (Input.GetMouseButtonDown(1))
        {
            Vector2D point = input.GetInputPosition(0);

            if (target != null)
            {
                Polygon2D poly = target.shape.GetWorld();
                if (poly.PointInPoly(point) == false)
                {
                    target = null;

                    linearPair.A = Vector2D.Zero();
                    linearPair.B = Vector2D.Zero();
                }
            }

            foreach (Slicer2D slicer in Slicer2D.GetList())
            {
                Polygon2D poly = slicer.shape.GetWorld();
                if (poly.PointInPoly(point))
                {
                    int    id       = 0;
                    double distance = 1000000;

                    foreach (Vector2D p in poly.pointsList)
                    {
                        double newDistance = Vector2D.Distance(p, point);
                        if (newDistance < distance)
                        {
                            distance = newDistance;
                            id       = poly.pointsList.IndexOf(p);
                        }
                    }

                    verticeID = id;
                    target    = slicer;

                    break;
                }
            }
        }
    }
        public void LateUpdate()
        {
            if (BlockedByUI() == false)
            {
                input.Update();
            }

            Vector2 pos = input.GetInputPosition();

            switch (sliceType)
            {
            case SliceType.Linear:
                linearControllerObject.Update();
                break;

            case SliceType.LinearCut:
                linearCutControlelrObject.Update(pos);
                break;

            case SliceType.ComplexCut:
                complexCutControllerObject.Update(pos);
                break;

            case SliceType.Complex:
                complexControllerObject.Update();
                break;

            case SliceType.LinearTracked:
                linearTrackedControlelrObject.Update(pos);
                break;

            case SliceType.ComplexTracked:
                complexTrackedControllerObject.Update(pos);
                break;

            case SliceType.Point:
                pointControllerObject.Update(pos);
                break;

            case SliceType.Explode:
                explodeControllerObject.Update(pos);
                break;

            case SliceType.ComplexClick:
                complexClickControllerObject.Update(pos);
                break;

            case SliceType.LinearTrail:
                linearTrailControllerObject.Update();
                break;

            case SliceType.ComplexTrail:
                complexTrailControllerObject.Update();
                break;

            case SliceType.Create:
                createControllerObject.Update(pos, transform);
                break;

            case SliceType.Polygon:
                polygonControllerObject.Update(pos);
                break;

            case SliceType.MergerComplex:
                mergerComplexControllerObject.Update();
                break;

            case SliceType.MergerPolygon:
                mergerPolygonControllerObject.Update(pos);
                break;


            default:
                break;
            }

            Draw();
        }