public void Setup() { m_HoveredBone = -1; m_View = Substitute.For <IBindPoseView>(); m_View.hoveredBone.Returns(x => m_HoveredBone); m_SelectedBones = new List <int>(); m_Selection = Substitute.For <ISelection>(); m_Selection.Count.Returns(x => m_SelectedBones.Count); m_Selection.IsSelected(Arg.Any <int>()).Returns(x => m_SelectedBones.Contains((int)x[0])); m_Selection.GetEnumerator().Returns(x => m_SelectedBones.GetEnumerator()); m_Selection.single.Returns(x => { if (m_SelectedBones.Count == 1) { return(m_SelectedBones[0]); } return(-1); }); m_UndoObject = Substitute.For <IUndoObject>(); m_SpriteMeshData = new SpriteMeshData(); m_SpriteMeshData.frame = new Rect(0f, 0f, 100f, 100f); m_SpriteMeshData.bones = CreateSpriteBoneData(); m_BindPoseController = new BindPoseController(); m_BindPoseController.spriteMeshData = m_SpriteMeshData; m_BindPoseController.bindPoseView = m_View; m_BindPoseController.selection = m_Selection; m_BindPoseController.undoObject = m_UndoObject; }
public void Setup() { m_Triangulator = new Triangulator(); m_Selection = Substitute.For <ISelection>(); m_UndoObject = Substitute.For <IUndoObject>(); m_SpriteMeshData = new SpriteMeshData(); m_SpriteMeshData.bones = CreateBones(); m_SpriteMeshData.vertices = CreateVertices(); m_SpriteMeshData.edges = CreateEdges(); m_SpriteMeshData.Triangulate(m_Triangulator); m_WeightEditor = new WeightEditor(); m_WeightEditor.spriteMeshData = m_SpriteMeshData; m_WeightEditor.selection = m_Selection; m_WeightEditor.undoObject = m_UndoObject; }
public void Setup() { m_SelectedVertices = new List <int>(); m_Selection = Substitute.For <ISelection>(); m_Selection.Count.Returns(x => m_SelectedVertices.Count); m_Selection.IsSelected(Arg.Any <int>()).Returns(x => m_SelectedVertices.Contains((int)x[0])); m_Selection.GetEnumerator().Returns(x => m_SelectedVertices.GetEnumerator()); m_Selection.single.Returns(x => { if (m_SelectedVertices.Count == 1) { return(m_SelectedVertices[0]); } return(-1); }); m_SpriteMeshData = new SpriteMeshData(); }
public void Setup() { m_MousePosition = Vector2.zero; m_HoveredVertex = -1; m_HoveredEdge = -1; m_ClosestEdge = -1; m_View = Substitute.For <ISpriteMeshView>(); m_View.mouseWorldPosition.Returns(x => m_MousePosition); m_View.hoveredVertex.Returns(x => m_HoveredVertex); m_View.hoveredEdge.Returns(x => m_HoveredEdge); m_View.closestEdge.Returns(x => m_ClosestEdge); m_View.WorldToScreen(Arg.Any <Vector2>()).Returns(x => ((Vector2)x[0] * 100f)); m_View.IsActionTriggered(Arg.Any <MeshEditorAction>()).Returns(true); m_SelectedVertices = new List <int>(); m_Selection = Substitute.For <ISelection <int> >(); m_Selection.Count.Returns(x => m_SelectedVertices.Count); m_Selection.Contains(Arg.Any <int>()).Returns(x => m_SelectedVertices.Contains((int)x[0])); m_Selection.elements.Returns(x => m_SelectedVertices.ToArray()); m_Selection.activeElement.Returns(x => { if (m_SelectedVertices.Count == 0) { return(-1); } return(m_SelectedVertices[0]); }); m_CacheUndo = Substitute.For <ICacheUndo>(); m_Triangulator = Substitute.For <ITriangulator>(); m_SpriteMeshData = new SpriteMeshData(); m_SpriteMeshData.frame = new Rect(0f, 0f, 100f, 100f); m_SpriteMeshController = new SpriteMeshController(); m_SpriteMeshController.frame = m_SpriteMeshData.frame; m_SpriteMeshController.spriteMeshData = m_SpriteMeshData; m_SpriteMeshController.spriteMeshView = m_View; m_SpriteMeshController.selection = m_Selection; m_SpriteMeshController.cacheUndo = m_CacheUndo; m_SpriteMeshController.triangulator = m_Triangulator; m_SpriteMeshDataController.spriteMeshData = m_SpriteMeshData; }
public void Setup() { m_SelectedVertices = new List <int>(); m_Selection = Substitute.For <ISelection <int> >(); m_Selection.Count.Returns(x => m_SelectedVertices.Count); m_Selection.Contains(Arg.Any <int>()).Returns(x => m_SelectedVertices.Contains((int)x[0])); m_Selection.elements.Returns(x => m_SelectedVertices.ToArray()); m_Selection.activeElement.Returns(x => { if (m_SelectedVertices.Count == 0) { return(-1); } return(m_SelectedVertices[0]); }); m_SpriteMeshData = new SpriteMeshData(); m_SpriteMeshDataController.spriteMeshData = m_SpriteMeshData; }
public void Setup() { m_Triangulator = new Triangulator(); m_Selection = Substitute.For <ISelection <int> >(); m_CacheUndo = Substitute.For <ICacheUndo>(); m_SpriteMeshData = new SpriteMeshData(); m_SpriteMeshData.bones = CreateBones(); m_SpriteMeshData.vertices = CreateVertices(); m_SpriteMeshData.edges = CreateEdges(); m_SpriteMeshDataController.spriteMeshData = m_SpriteMeshData; Triangulate(); m_WeightEditor = new WeightEditor(); m_WeightEditor.spriteMeshData = m_SpriteMeshData; m_WeightEditor.selection = m_Selection; m_WeightEditor.cacheUndo = m_CacheUndo; }
public void Setup() { m_MousePosition = Vector2.zero; m_HoveredVertex = -1; m_HoveredEdge = -1; m_ClosestEdge = -1; m_View = Substitute.For <ISpriteMeshView>(); m_View.mouseWorldPosition.Returns(x => m_MousePosition); m_View.hoveredVertex.Returns(x => m_HoveredVertex); m_View.hoveredEdge.Returns(x => m_HoveredEdge); m_View.closestEdge.Returns(x => m_ClosestEdge); m_View.WorldToScreen(Arg.Any <Vector2>()).Returns(x => ((Vector2)x[0] * 100f)); m_SelectedVertices = new List <int>(); m_Selection = Substitute.For <ISelection>(); m_Selection.Count.Returns(x => m_SelectedVertices.Count); m_Selection.IsSelected(Arg.Any <int>()).Returns(x => m_SelectedVertices.Contains((int)x[0])); m_Selection.GetEnumerator().Returns(x => m_SelectedVertices.GetEnumerator()); m_Selection.single.Returns(x => { if (m_SelectedVertices.Count == 1) { return(m_SelectedVertices[0]); } return(-1); }); m_UndoObject = Substitute.For <IUndoObject>(); m_Triangulator = Substitute.For <ITriangulator>(); m_SpriteMeshData = new SpriteMeshData(); m_SpriteMeshData.frame = new Rect(0f, 0f, 100f, 100f); m_SpriteMeshController = new SpriteMeshController(); m_SpriteMeshController.spriteMeshData = m_SpriteMeshData; m_SpriteMeshController.spriteMeshView = m_View; m_SpriteMeshController.selection = m_Selection; m_SpriteMeshController.undoObject = m_UndoObject; m_SpriteMeshController.triangulator = m_Triangulator; }
public static SpriteMeshData GetSpriteMeshData(Sprite sprite) { if (sprite == null) { throw new ArgumentNullException(nameof(sprite)); } if (SpriteMeshDataMap.TryGetValue(sprite, out SpriteMeshData spriteMeshData)) { return(spriteMeshData); } spriteMeshData = new SpriteMeshData { Triangles = sprite.triangles, UV = sprite.uv, Vertices = sprite.vertices }; SpriteMeshDataMap.Add(sprite, spriteMeshData); return(spriteMeshData); }
void AutoGenerateSpriteSkinData(SpriteMetaData metaData) { //If bone data exist but skinning data doesn't exist, auto generate them if (metaData.spriteBone != null && metaData.spriteBone.Count > 0 && (metaData.vertices == null || metaData.vertices.Count == 0)) { var spriteMeshDataController = new SpriteMeshDataController(); var smd = new SpriteMeshData(); smd.spriteID = metaData.spriteID; smd.frame = metaData.rect; smd.pivot = metaData.pivot; smd.bones = ModuleUtility.CreateSpriteBoneData(metaData.spriteBone.ToArray(), Matrix4x4.TRS(metaData.rect.position, Quaternion.identity, Vector3.one)); spriteMeshDataController.spriteMeshData = smd; spriteMeshDataController.OutlineFromAlpha(new OutlineGenerator(), GetDataProvider <ITextureDataProvider>(), 0.05f, 200); spriteMeshDataController.Triangulate(new Triangulator()); spriteMeshDataController.Subdivide(new Triangulator(), 0.25f); spriteMeshDataController.CalculateWeights(new BoundedBiharmonicWeightsGenerator(), null, 0.01f); spriteMeshDataController.SortTrianglesByDepth(); List <Vertex2DMetaData> vmd = new List <Vertex2DMetaData>(smd.vertices.Count); foreach (var v in smd.vertices) { vmd.Add(new Vertex2DMetaData() { position = v.position - smd.frame.position, boneWeight = v.editableBoneWeight.ToBoneWeight(true) }); } List <Vector2Int> emd = new List <Vector2Int>(smd.edges.Count); foreach (var e in smd.edges) { emd.Add(new Vector2Int(e.index1, e.index2)); } metaData.vertices = vmd; metaData.indices = smd.indices.ToArray(); metaData.edges = emd.ToArray(); } }
void UpdateSpriteMeshData() { _spriteMeshData = SpriteMeshUtils.LoadSpriteMeshData(spriteMesh.objectReferenceValue as SpriteMesh); }