Esempio n. 1
0
        /**
         *	\brief This is how we figure out what face is clicked.
         */
        public bool FaceCheck(Vector3 pos)
        {
            Ray        ray = Camera.main.ScreenPointToRay(pos);
            RaycastHit hit;

            if (Physics.Raycast(ray.origin, ray.direction, out hit))
            {
                pb_Object hitpb = hit.transform.gameObject.GetComponent <pb_Object>();

                if (hitpb == null)
                {
                    return(false);
                }

                Mesh m = hitpb.msh;

                int[] tri = new int[3] {
                    m.triangles[hit.triangleIndex * 3 + 0],
                    m.triangles[hit.triangleIndex * 3 + 1],
                    m.triangles[hit.triangleIndex * 3 + 2]
                };

                currentSelection.pb = hitpb;

                return(hitpb.FaceWithTriangle(tri, out currentSelection.face));
            }
            return(false);
        }
Esempio n. 2
0
    bool FaceRaycast(Vector2 mouse, out pb_Object pb, out pb_Face face)
    {
        var        ray = Camera.main.ScreenPointToRay(mouse);
        RaycastHit rayHit;

        if (Physics.Raycast(ray.origin, ray.direction, out rayHit))
        {
            pb = rayHit.transform.gameObject.GetComponent <pb_Object>();

            if (pb == null)
            {
                face = null;
                return(false);
            }

            Mesh m = pb.GetComponent <MeshFilter>().sharedMesh;

            int[] tri = new int[3] {
                m.triangles[rayHit.triangleIndex * 3 + 0],
                m.triangles[rayHit.triangleIndex * 3 + 1],
                m.triangles[rayHit.triangleIndex * 3 + 2]
            };

            return(pb.FaceWithTriangle(tri, out face));
        }

        pb   = null;
        face = null;

        return(false);
    }