public void Update()
    {
        input.Update();

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

        visuals.Clear();

        for (int id = 0; id < 10; id++)
        {
            if (linearPair[id].A.ToVector2() == Vector2.zero && linearPair[id].B.ToVector2() == Vector2.zero)
            {
                continue;
            }

            if (input.GetVisualsEnabled(id) == false)
            {
                continue;
            }

            visuals.GenerateLinearMesh(linearPair[id], transform);
        }

        visuals.Draw();
    }
    public void Update()
    {
        input.Update();

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

        for (int id = 0; id < 10; id++)
        {
            if (points[id].Count < 1)
            {
                continue;
            }

            if (input.GetVisualsEnabled(id) == false)
            {
                continue;
            }

            visuals.GenerateComplexMesh(points[id], transform);
            visuals.Draw();
        }
    }
        public void Update()
        {
            input.Update();

            visuals.Clear();

            if (points.Count() > 0)
            {
                visuals.GenerateComplexMesh(points);
            }

            visuals.Draw();
        }
예제 #4
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();
        }