示例#1
0
        public void InitializeBrush(HeadMeshesController headMeshController)
        {
            points.Clear();
            triangles.Clear();

            var tempPoins = new Dictionary <Vector3, BrushPoint>(new VectorEqualityComparer());

            foreach (var part in headMeshController.RenderMesh.Parts)
            {
                var tempIndices = new BrushPoint[part.Vertices.Length];
                for (var i = 0; i < part.Vertices.Length; ++i)
                {
                    BrushPoint bp;
                    var        vertex = part.Vertices[i];
                    if (!tempPoins.TryGetValue(vertex.OriginalPosition, out bp))
                    {
                        bp = new BrushPoint
                        {
                            Position   = vertex.OriginalPosition,
                            CheckIndex = i,
                            Part       = part
                        };
                        tempPoins.Add(bp.Position, bp);
                        points.Add(bp);
                    }
                    tempIndices[i] = bp;
                }

                for (var i = 0; i < part.Indices.Count; i += 3)
                {
                    var triangle = new BrushTriangle
                    {
                        PartGuid = part.Guid
                    };
                    for (var j = 0; j < 3; ++j)
                    {
                        var index = part.Indices[i + j];
                        var point = tempIndices[index];
                        triangle.Points[j]  = point;
                        triangle.Indices[j] = index;
                        point.Triangles.Add(triangle);
                    }
                    triangles.Add(triangle);
                }
            }
        }
示例#2
0
        public void InitializeBrush(HeadMeshesController headMeshController)
        {
            points.Clear();
            triangles.Clear();

            var tempPoins = new Dictionary<Vector3, BrushPoint>(new VectorEqualityComparer());
            foreach (var part in headMeshController.RenderMesh.Parts)
            {
                var tempIndices = new BrushPoint[part.Vertices.Length];
                for (int i = 0; i < part.Vertices.Length; ++i)
                {
                    BrushPoint bp;
                    var vertex = part.Vertices[i];
                    if (!tempPoins.TryGetValue(vertex.OriginalPosition, out bp))
                    {
                        bp = new BrushPoint
                        {
                            Position = vertex.OriginalPosition,
                            CheckIndex = i,
                            Part = part
                        };
                        tempPoins.Add(bp.Position, bp);
                        points.Add(bp);
                    }
                    tempIndices[i] = bp;
                }

                for (int i = 0; i < part.Indices.Count; i += 3)
                {
                    var triangle = new BrushTriangle
                    {
                        PartGuid = part.Guid
                    };
                    for (int j = 0; j < 3; ++j)
                    {
                        var index = part.Indices[i + j];
                        var point = tempIndices[index];
                        triangle.Points[j] = point;
                        triangle.Indices[j] = index;
                        point.Triangles.Add(triangle);
                    }
                    triangles.Add(triangle);
                }
            }
        }
示例#3
0
 public void Initialize(HeadMeshesController hmc)
 {
     headMeshController = hmc;
 }