public static void CalculateWeights(this SpriteMeshData spriteMeshData, IWeightsGenerator weightsGenerator, ISelection selection, float filterTolerance) { Vector2[] controlPoints; Edge[] bones; int[] pins; spriteMeshData.GetControlPoints(out controlPoints, out bones, out pins); Vector2[] vertices = new Vector2[spriteMeshData.vertices.Count]; for (int i = 0; i < spriteMeshData.vertices.Count; ++i) { vertices[i] = spriteMeshData.vertices[i].position; } BoneWeight[] boneWeights = weightsGenerator.Calculate(vertices, spriteMeshData.edges.ToArray(), controlPoints, bones, pins); Debug.Assert(boneWeights.Length == spriteMeshData.vertices.Count); for (int i = 0; i < spriteMeshData.vertices.Count; ++i) { if (selection == null || (selection.Count == 0 || selection.IsSelected(i))) { EditableBoneWeight editableBoneWeight = EditableBoneWeightUtility.CreateFromBoneWeight(boneWeights[i]); if (filterTolerance > 0f) { editableBoneWeight.FilterChannels(filterTolerance); editableBoneWeight.NormalizeChannels(); } spriteMeshData.vertices[i].editableBoneWeight = editableBoneWeight; } } }
public Vertex2D(Vector2 position, BoneWeight weights) { m_Position = position; m_EditableBoneWeight = EditableBoneWeightUtility.CreateFromBoneWeight(weights); }
public Vertex2D(Vector2 position) { m_Position = position; m_EditableBoneWeight = EditableBoneWeightUtility.CreateFromBoneWeight(new BoneWeight()); }