Exemplo n.º 1
0
 private void Start()
 {
     _gm             = GameManager.instance;
     _separation     = 0.1f;
     _meshCutter     = new MeshCutter(256);
     _playerMovement = PlayerMovement.instance;
     _soundManager   = SoundManager.instance;
 }
Exemplo n.º 2
0
 // Use this for initialization
 void Start()
 {
     dragging = false;
     // Initialize a somewhat big array so that it doesn't resize hopefully?
     meshCutter         = new MeshCutter(256);
     line               = GetComponent <LineRenderer>();
     line.positionCount = 0;
 }
Exemplo n.º 3
0
        private void SlideCut(Vector3 point1, Vector3 point2)
        {
            var condition = point2.y > point1.y;

            MeshCutter.CutMesh(MainManager.FigureController.MeshFilter,
                               new Plane(condition ? point1 : point2, condition ? point2 : point1,
                                         new Vector3(point2.x, point2.y, point2.z + 1)));
            MainManager.FigureController.UpdateMeshRenderer();
        }
Exemplo n.º 4
0
    private void Start()
    {
        plane = new Plane(new Vector3(0, 1, 0), Vector3.zero);

        PrimitivesPro.MeshUtils.SetGameObjectActive(OriginalObject.gameObject, false);

        UnityEngine.Random.InitState(System.DateTime.Now.Millisecond);

        cutter = new MeshCutter();
    }
Exemplo n.º 5
0
    private void Start()
    {
        plane = new Plane(new Vector3(0, 1, 0), Vector3.zero);

        PrimitivesPro.MeshUtils.SetGameObjectActive(OriginalObject.gameObject, false);

        UnityEngine.Random.seed = System.DateTime.Now.Millisecond;

        cutter = new MeshCutter();
    }
Exemplo n.º 6
0
    private void Start()
    {
        foreach (var obj in OriginalObjects)
        {
            PrimitivesPro.MeshUtils.SetGameObjectActive(obj.gameObject, false);
        }

        OriginalObject = OriginalObjects[objectIdx];

        plane = new Plane(new Vector3(0, 1, 0), Vector3.zero);

        UnityEngine.Random.seed = System.DateTime.Now.Millisecond;

        cutter = new MeshCutter();
    }
Exemplo n.º 7
0
    private void Start()
    {
        foreach (var obj in OriginalObjects)
        {
            PrimitivesPro.MeshUtils.SetGameObjectActive(obj.gameObject, false);
        }

        OriginalObject = OriginalObjects[objectIdx];

        plane = new Plane(new Vector3(0, 1, 0), Vector3.zero);

        UnityEngine.Random.seed = System.DateTime.Now.Millisecond;

        cutter = new MeshCutter();
    }
Exemplo n.º 8
0
        // Token: 0x060041FE RID: 16894 RVA: 0x0014F924 File Offset: 0x0014DD24
        public void Cut()
        {
            MeshCutter meshCutter = new MeshCutter();

            PrimitivesPro.Utils.Plane plane = this.ComputePlane();
            GameObject  gameObject;
            GameObject  gameObject2;
            ContourData contourData;

            base.GenerationTimeMS = meshCutter.Cut(this.cuttingObject, plane, this.triangulateHoles, this.deleteOriginal, this.crossSection, out gameObject, out gameObject2, out contourData);
            if (gameObject != null)
            {
                gameObject.AddComponent <DefaultObject>();
                gameObject2.AddComponent <DefaultObject>();
            }
        }
Exemplo n.º 9
0
        private void Update()
        {
            if (!Input.GetMouseButtonDown(0) ||
                !Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition),
                                 out var hit, 50f))
            {
                return;
            }

            var hitFilter = hit.transform.GetComponent <MeshFilter>();

            if (!hitFilter)
            {
                return;
            }

            var hitFilterRigidbody = hit.transform.GetComponent <Rigidbody>();

            Destroy(hitFilter.GetComponent <Collider>()); // destroy collider!

            cutPlane.transform.position = hit.point;

            var cutFilters = MeshCutter.CutMeshFilter(hitFilter, cutPlane);

            float multiplier = -1;

            foreach (var cutFilter in cutFilters)
            {
                cutFilter.gameObject.AddComponent <BoxCollider>().isTrigger = true;

                if (isKinematicMovement)
                {
                    cutFilter.transform.position += Vector3.left * .5f * multiplier;
                    multiplier *= -1; // now change to positive

                    continue;
                }

                var rigidBody = cutFilter.gameObject.AddComponent <Rigidbody>();

                rigidBody.velocity = hitFilterRigidbody.velocity;
                rigidBody.AddForce(Vector3.left * Random.Range(minCutForce, maxCutForce) * multiplier);

                multiplier *= -1; // now change to positive
            }
        }
Exemplo n.º 10
0
    private void OnEnable()
    {
        // Stop if we are not in sync with the AppManager.
        if (AppManager.currentMode != "MeshCutter")
        {
            return;
        }

        // Create mesh cutter.
        if (!meshCutter)
        {
            meshCutter = Instantiate(meshCutterTemplate);
            MoveCutterToHand(rightHander);
            meshCutter.TargetMesh = targetMesh;
        }
        meshCutter.gameObject.SetActive(true);
    }
Exemplo n.º 11
0
        public void Cut()
        {
            MeshUtils.Log("Cutting: " + cuttingObject.name);

            var cutter = new MeshCutter();

            // create cutting plane
            var plane = ComputePlane();

            ContourData contour;

            GameObject cut0, cut1;

            GenerationTimeMS = cutter.Cut(cuttingObject, plane, triangulateHoles, deleteOriginal, out cut0, out cut1, out contour);

            if (cut0 != null)
            {
                cut0.AddComponent <DefaultObject>();
                cut1.AddComponent <DefaultObject>();
            }
        }
Exemplo n.º 12
0
    void Start()
    {
        // Create box
        Mesh mesh = CreateBoxMesh(3, 1, 1);

        // Cut box
        Plane cutPlane = new Plane(_slicePlaneA, _slicePlaneB, _slicePlaneC);

        mesh = MeshCutter.CutMesh(mesh, cutPlane);

        // cut again!
        Plane cutPlane2 = new Plane(_slicePlane2[0], _slicePlane2[1], _slicePlane2[2]);

        mesh = MeshCutter.CutMesh(mesh, cutPlane2);

        // cut again!!
        Plane cutPlane3 = new Plane(_slicePlane3[0], _slicePlane3[1], _slicePlane3[2]);

        //mesh = MeshCutter.CutMesh(mesh, cutPlane3);

        GetComponent <MeshFilter>().mesh = mesh;
    }
Exemplo n.º 13
0
    private void Start()
    {
        // init cutter
        cutter = new MeshCutter();
        cutter.Init(512, 512);
        UnityEngine.Random.seed = System.DateTime.Now.Millisecond;

        bool use2d = false;

#if PHYSICS_2D
        use2d = Use2DCollision;
#endif

        // init pool
        FragmentPool.Instance.Allocate(FragmentPoolSize, MeshColliders, use2d);
        FragmentPool.Instance.SetDeactivateOptions(DeactivateOptions, FadeoutOptions, DeactivateTimeout);
        FragmentPool.Instance.SetExplodableFragments(ExplodeFragments, DontUseTag);
        FragmentPool.Instance.SetFragmentPhysicsOptions(FragmentOptions);
        timer = new Stopwatch();

        // init queue
        queue = new ExploderQueue(this);

        if (DontUseTag)
        {
            gameObject.AddComponent <Explodable>();
        }
        else
        {
            gameObject.tag = "Exploder";
        }

        state = State.DryRun;

        PreAllocateBuffers();

        state = State.None;
    }
Exemplo n.º 14
0
    public void CreateObject(Mesh mesh, Vector3 CutDir)
    {
        MeshCutterAttacher Empty = (Instantiate(meshCutterAttach.gameObject, transform.position, transform.rotation) as GameObject).GetComponent <MeshCutterAttacher>();

        Empty.transform.parent     = transform;
        Empty.transform.localScale = new Vector3(1, 1, 1);
        Empty.transform.parent     = null;
        MeshCutter EmptyMeshCutter = Empty.gameObject.AddComponent <MeshCutter>();

        EmptyMeshCutter.renderer   = Empty.gameObject.AddComponent <MeshRenderer>();
        EmptyMeshCutter.meshFilter = Empty.gameObject.AddComponent <MeshFilter>();

        EmptyMeshCutter.renderer.material = renderer.sharedMaterial;
        EmptyMeshCutter.meshFilter.mesh   = mesh;

        EmptyMeshCutter.MaxCut = MaxCut - 1;

        EmptyMeshCutter.meshCutterAttach = meshCutterAttach;
        Empty.CutDir = CutDir;

        meshcutters[CreateIndex] = EmptyMeshCutter;
        CreateIndex++;
    }
Exemplo n.º 15
0
        /// <summary>
        /// run cutting algorithm
        /// </summary>
        public void Cut(GameObject primitive, bool fillHoles, bool deleteOriginal)
        {
            MeshUtils.Log("Cutting: " + primitive.name);

            var cutter = new MeshCutter();

            // create cutting plane
            var plane = ComputePlane();

            ContourData contour;

            GameObject cut0, cut1;

            GenerationTimeMS = cutter.Cut(primitive, plane, fillHoles, deleteOriginal, out cut0, out cut1, out contour);

//            contour.ShowContourDBG(float.MaxValue);
//            contour.CreateGameObject(true);

            if (cut0 != null)
            {
                cut0.AddComponent <DefaultObject>();
                cut1.AddComponent <DefaultObject>();
            }
        }
Exemplo n.º 16
0
 // Use this for initialization
 void Start()
 {
     // Initialize a somewhat big array so that it doesn't resize
     meshCutter = new MeshCutter(256);
 }
Exemplo n.º 17
0
 private void Awake()
 {
     IS = this;
 }
Exemplo n.º 18
0
 private void Start()
 {
     meshCutter = new MeshCutter(256);
 }
Exemplo n.º 19
0
 private void PointCut(Vector3 clickPoint)
 {
     MeshCutter.CutMesh(MainManager.FigureController.MeshFilter, new Plane(Vector3.right, clickPoint));
     MainManager.FigureController.UpdateMeshRenderer();
 }
Exemplo n.º 20
0
    private void Start()
    {
        // init cutter
        cutter = new MeshCutter();
        cutter.Init(512, 512);
        UnityEngine.Random.seed = System.DateTime.Now.Millisecond;

        bool use2d = false;

#if PHYSICS_2D
        use2d = Use2DCollision;
#endif

        // init pool
        FragmentPool.Instance.Allocate(FragmentPoolSize, MeshColliders, use2d);
        FragmentPool.Instance.SetDeactivateOptions(DeactivateOptions, FadeoutOptions, DeactivateTimeout);
        FragmentPool.Instance.SetExplodableFragments(ExplodeFragments, DontUseTag);
        FragmentPool.Instance.SetFragmentPhysicsOptions(FragmentOptions);
        timer = new Stopwatch();

        // init queue
        queue = new ExploderQueue(this);

        if (DontUseTag)
        {
            gameObject.AddComponent<Explodable>();
        }
        else
        {
            gameObject.tag = "Exploder";
        }

        state = State.DryRun;

        PreAllocateBuffers();

        state = State.None;
    }
Exemplo n.º 21
0
 /// <summary>
 /// Awake is called when the script instance is being loaded.
 /// </summary>
 void Awake()
 {
     mc          = gameObject.AddComponent <MeshCutter> ();
     mc.manifold = this;
     gameObject.AddComponent <ManifoldDragging> ();
 }