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); } } }
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); } } }
public void Initialize(HeadMeshesController hmc) { headMeshController = hmc; }