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();
        }
Ejemplo n.º 4
0
        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;
        }
Ejemplo n.º 6
0
        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;
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 9
0
        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();
            }
        }
Ejemplo n.º 10
0
 void UpdateSpriteMeshData()
 {
     _spriteMeshData = SpriteMeshUtils.LoadSpriteMeshData(spriteMesh.objectReferenceValue as SpriteMesh);
 }