コード例 #1
0
        public bool ExtractToTrianglesFromIndexedPrimitives(List <Vector3Int> originalFaceIndices)
        {
            //build new node-array
            List <NullSkeletonBindingNode> newBindingNodeArray = new List <NullSkeletonBindingNode>();

            for (int i = 0; i < originalFaceIndices.Count * 3; i++)
            {
                newBindingNodeArray.Add(new NullSkeletonBindingNode(CurrentVersion));
            }
            using (NullMemoryStream stream = NullMemoryStream.ReadAndWrite())
            {
                for (int i = 0; i < originalFaceIndices.Count; i++)
                {
                    int id0 = originalFaceIndices[i].x;
                    int id1 = originalFaceIndices[i].y;
                    int id2 = originalFaceIndices[i].z;
                    stream.WriteStream(mBindingNodeArray[id0]);
                    stream.WriteStream(mBindingNodeArray[id1]);
                    stream.WriteStream(mBindingNodeArray[id2]);
                    newBindingNodeArray[i * 3 + 0].LoadFromStream(stream);
                    newBindingNodeArray[i * 3 + 1].LoadFromStream(stream);
                    newBindingNodeArray[i * 3 + 2].LoadFromStream(stream);
                }
            }
            for (int i = 0; i < mBindingNodeArray.Count; ++i)
            {
                mBindingNodeArray[i].Clear();
            }
            mBindingNodeArray = newBindingNodeArray;
            return(true);
        }
コード例 #2
0
        public bool BuildIndexedPrimitives(List <NullMergeIndex> indexMapping)
        {
            //build new node-array
            List <NullSkeletonBindingNode> newBindingNodeArray = new List <NullSkeletonBindingNode>();

            for (int i = 0; i < indexMapping.Count; i++)
            {
                newBindingNodeArray.Add(new NullSkeletonBindingNode(CurrentVersion));
            }
            //extract
            for (int i = 0; i < indexMapping.Count; i++)
            {
                NullMemoryStream stream = NullMemoryStream.ReadAndWrite();
                NullMergeIndex   index  = indexMapping[i];
                mBindingNodeArray[index.index].SaveToStream(stream);
                newBindingNodeArray[i].LoadFromStream(stream);
            }
            for (int i = 0; i < mBindingNodeArray.Count; i++)
            {
                mBindingNodeArray[i].Clear();
            }
            mBindingNodeArray = newBindingNodeArray;
            return(true);
        }