GetPoint() public method

public GetPoint ( Point point ) : Vector3
point Point
return Vector3
Esempio n. 1
0
        // Update is called once per frame
        void LateUpdate()
        {
            if (_editingPoints)
            {
                return;
            }

            if (Application.isPlaying && !_skinnedMeshRenderer.isVisible)
            {
                return;
            }

            if (controlPoints == null || points == null)
            {
                return;
            }

            if (!_editingPoints && controlPoints.Length > 0)
            {
                count = controlPoints.Length;

                if (vertices == null || vertices.Count != _skinnedMeshRenderer.sharedMesh.vertexCount)
                {
                    vertices.Clear();
                    _skinnedMeshRenderer.sharedMesh.GetVertices(vertices);
                }
                else
                {
                    _skinnedMeshRenderer.sharedMesh.GetVertices(vertices);
                }

                updateControlPoints = false;

                for (c = 0; c < count; c++)
                {
                    if (!updateControlPoints)
                    {
                        if (vertices[c] != points.GetPoint(controlPoints[c]))
                        {
                            updateControlPoints = true;
                        }
                    }

                    if (updateControlPoints)
                    {
                        vertices[c] = points.GetPoint(controlPoints[c]);
                    }
                }

                if (updateControlPoints)
                {
                    _skinnedMeshRenderer.sharedMesh.SetVertices(vertices);
                }
            }
        }
Esempio n. 2
0
        public void UpdateControlPoints()
        {
            count = controlPoints.Length;

            if (vertices == null || vertices.Length != _skinnedMeshRenderer.sharedMesh.vertexCount)
            {
                                #if UNITY_2020_1_OR_NEWER
                using (var dataArray = Mesh.AcquireReadOnlyMeshData(_skinnedMeshRenderer.sharedMesh)) {
                    var data = dataArray[0];

                    if (vertices != null && vertices.IsCreated)
                    {
                        vertices.Dispose();
                    }

                    vertices = new NativeArray <Vector3>(skinnedMeshRenderer.sharedMesh.vertexCount, Allocator.Persistent);

                    data.GetVertices(vertices);
                }
                                #else
                if (vertices != null && vertices.IsCreated)
                {
                    vertices.Dispose();
                }

                vertices = new NativeArray <Vector3>(skinnedMeshRenderer.sharedMesh.vertices, Allocator.Persistent);
                                #endif
            }

            updateControlPoints = false;

            for (c = 0; c < count; c++)
            {
                currentControlPoint = points.GetPoint(controlPoints[c]);

                if (vertices[c].x != currentControlPoint.x ||
                    vertices[c].y != currentControlPoint.y ||
                    vertices[c].z != currentControlPoint.z)
                {
                    updateControlPoints = true;

                    vertices[c] = currentControlPoint;
                }
            }

            if (updateControlPoints)
            {
                _skinnedMeshRenderer.sharedMesh.SetVertices(vertices);
            }
        }
Esempio n. 3
0
 // Update is called once per frame
 void LateUpdate()
 {
     if (skinnedMeshRenderer != null && skinnedMeshRenderer.sharedMesh != null &&
         controlPoints != null && controlPoints.Length > 0)
     {
         for (int i = 0; i < controlPoints.Length; i++)
         {
             if (points != null)
             {
                 if (vertices == null || vertices.Length != skinnedMeshRenderer.sharedMesh.vertexCount)
                 {
                     vertices = new Vector3[skinnedMeshRenderer.sharedMesh.vertexCount];
                     vertices = skinnedMeshRenderer.sharedMesh.vertices;
                 }
                 vertices[i] = points.GetPoint(controlPoints[i]);
             }
         }
         skinnedMeshRenderer.sharedMesh.vertices = vertices;
     }
 }