Beispiel #1
0
        public void CreateVertexBuffer(Device device)
        {
            if (VertexBuffer != null)
            {
                VertexBuffer.Dispose();
            }

            var count = 0;

            count = Animated ? SkinnedVertices.Count : Vertices.Count;

            var desc = new BufferDescription()
            {
                BindFlags      = BindFlags.VertexBuffer,
                CpuAccessFlags = CpuAccessFlags.None,
                OptionFlags    = ResourceOptionFlags.None,
                Usage          = ResourceUsage.Immutable,
                SizeInBytes    = VertexStride * count
            };

            //Create Vertex buffer
            VertexBuffer = Animated ?
                           new Buffer(device, DataStream.Create(SkinnedVertices.ToArray(), false, false), desc) :
                           new Buffer(device, DataStream.Create(Vertices.ToArray(), false, false), desc);
        }
Beispiel #2
0
 private void UpdateVertexTransform()
 {
     if (meshVertexTransform != null)
     {
         SkinnedVertices.SetTransform(meshVertexTransform, bakedMesh, attachedVertexBones, attachedVertexIndex);
     }
 }
Beispiel #3
0
    public void Attach()
    {
        bakedMesh = new Mesh();
        skinnedMesh.BakeMesh(bakedMesh);
        attachedVertexIndex = bakedMesh.vertices.IndexOfMin(v => Vector3.SqrMagnitude(skinnedMesh.transform.TransformPoint(v) - transform.position));
        //attachedVertexPosition = skinnedMesh.transform.TransformPoint(mesh.vertices[attachedVertexIndex]);

        attachedVertexBones = SkinnedVertices.VertexBones(skinnedMesh, attachedVertexIndex);

        DeleteVertexTransform();
        CreateVertexTransform();

#if UNITY_EDITOR
        EditorUtility.SetDirty(this);
#endif

        //Debug.LogFormat("closestVertexIndex = {0}", attachedVertexIndex);
        //var localAttachedVertexPosition =
        //transform.position = ;
    }
Beispiel #4
0
        /// <summary>
        /// Clear all the things
        /// </summary>
        private void ResetMesh()
        {
            IsCreated = false;
            IsLoaded  = false;

            if (Animator != null)
            {
                Animator.Reset();
                Animator = null;
            }

            if (SkinnedVertices != null)
            {
                SkinnedVertices.Clear();
            }

            if (Vertices != null)
            {
                Vertices.Clear();
            }
        }