예제 #1
0
        public void TestSetup()
        {
            m_BoneDataProvider = Substitute.For <ISpriteBoneDataProvider>();
            m_SpriteEditor     = Substitute.For <ISpriteEditor>();
            m_SR1 = new SpriteRect();
            m_SR2 = new SpriteRect();

            m_SR1.spriteID = new GUID()
            {
            };

            List <SpriteBone> bones1 = new List <SpriteBone>();

            bones1.Add(new SpriteBone()
            {
                name = "root1", parentId = -1, rotation = Quaternion.identity
            });
            m_BoneDataProvider.GetBones(m_SR1.spriteID).Returns(bones1);

            List <SpriteBone> bones2 = new List <SpriteBone>();

            bones2.Add(new SpriteBone()
            {
                name = "root2", parentId = -1, rotation = Quaternion.identity
            });
            m_BoneDataProvider.GetBones(m_SR2.spriteID).Returns(bones2);

            m_SpriteEditor.GetDataProvider <ISpriteBoneDataProvider>().Returns(m_BoneDataProvider);

            m_Module = new BoneSpriteEditorModule();
            var prop = m_Module.GetType().GetProperty("spriteEditor");

            prop.SetValue(m_Module, m_SpriteEditor, null);
        }
        public BoneCacheManager(ISpriteBoneDataProvider boneDP, ISpriteMeshDataProvider meshDP)
        {
            m_BoneDP = boneDP;
            m_MeshDP = meshDP;

            m_SpriteBoneCache     = new Dictionary <GUID, List <UniqueSpriteBone> >();
            m_BoneUniqueIdInOrder = new Dictionary <GUID, List <GUID> >();
        }
예제 #3
0
        private void CreateSkeletonCache(SpriteCache sprite, ISpriteBoneDataProvider boneProvider)
        {
            var guid     = new GUID(sprite.id);
            var skeleton = CreateCache <SkeletonCache>();

            skeleton.position = sprite.textureRect.position;
            skeleton.SetBones(CreateBoneCacheFromSpriteBones(boneProvider.GetBones(guid).ToArray(), 1.0f), false);

            m_SkeletonMap[sprite] = skeleton;
        }
        public void Setup()
        {
            m_ID1 = GUID.Generate();
            m_ID2 = GUID.Generate();

            m_BoneDPMock = Substitute.For <ISpriteBoneDataProvider>();
            m_MeshDPMock = Substitute.For <ISpriteMeshDataProvider>();

            m_BoneDPMock.GetBones(m_ID1).Returns(new List <SpriteBone>());
            m_BoneDPMock.GetBones(m_ID2).Returns(new List <SpriteBone>());

            m_CacheManager = new BoneCacheManager(m_BoneDPMock, m_MeshDPMock);
        }
        public void OverwriteBones()
        {
            ISpriteEditorDataProvider mainSpriteDataProvider = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(mainSprite)) as ISpriteEditorDataProvider;

            mainSpriteDataProvider.InitSpriteEditorDataProvider();

            ISpriteBoneDataProvider boneDataProvider = mainSpriteDataProvider.GetDataProvider <ISpriteBoneDataProvider>();

            for (int i = 0; i < spritesToOverwrite.Length; i++)
            {
                ISpriteEditorDataProvider spriteDataProvider = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(spritesToOverwrite[i])) as ISpriteEditorDataProvider;
                spriteDataProvider.InitSpriteEditorDataProvider();
                ISpriteBoneDataProvider boneDataToOverwrite = spriteDataProvider.GetDataProvider <ISpriteBoneDataProvider>();
                GUID toOver   = spritesToOverwrite[i].GetSpriteID();
                GUID mainGuid = mainSprite.GetSpriteID();

                boneDataToOverwrite.SetBones(toOver, boneDataProvider.GetBones(mainGuid));
                spriteDataProvider.Apply();

                //force SetBindPose
                AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(spritesToOverwrite[i]));
            }
            Debug.Log("Bones overwritten");
        }
        public void Setup()
        {
            m_SpriteId = GUID.Generate();

            m_BoneDPMock = Substitute.For <ISpriteBoneDataProvider>();
            m_MeshDPMock = Substitute.For <ISpriteMeshDataProvider>();

            m_CacheManager = new BoneCacheManager(m_BoneDPMock, m_MeshDPMock);

            m_OriginalVertices = new Vertex2DMetaData[10]
            {
                //0
                new Vertex2DMetaData()
                {
                    boneWeight = new BoneWeight()
                    {
                        boneIndex0 = 0, weight0 = 1.0f
                    }
                },
                //1
                new Vertex2DMetaData()
                {
                    boneWeight = new BoneWeight()
                    {
                        boneIndex0 = 0, weight0 = 0.5f,
                        boneIndex1 = 1, weight1 = 0.5f
                    }
                },
                //2
                new Vertex2DMetaData()
                {
                    boneWeight = new BoneWeight()
                    {
                        boneIndex0 = 0, weight0 = 0.25f,
                        boneIndex1 = 2, weight1 = 0.25f,
                        boneIndex2 = 3, weight2 = 0.25f,
                        boneIndex3 = 4, weight3 = 0.25f
                    }
                },
                //3
                new Vertex2DMetaData()
                {
                    boneWeight = new BoneWeight()
                    {
                        boneIndex0 = 2, weight0 = 0.3f,
                        boneIndex1 = 3, weight1 = 0.3f,
                        boneIndex2 = 4, weight2 = 0.3f
                    }
                },
                //4
                new Vertex2DMetaData()
                {
                    boneWeight = new BoneWeight()
                    {
                        boneIndex0 = 1, weight0 = 0.5f,
                        boneIndex1 = 3, weight1 = 0.5f
                    }
                },
                //5
                new Vertex2DMetaData()
                {
                    boneWeight = new BoneWeight()
                    {
                        boneIndex0 = 4, weight0 = 1.0f
                    }
                },
                //6
                new Vertex2DMetaData()
                {
                    boneWeight = new BoneWeight()
                    {
                        boneIndex0 = 3, weight0 = 0.5f,
                        boneIndex1 = 4, weight1 = 0.5f
                    }
                },
                //7
                new Vertex2DMetaData()
                {
                    boneWeight = new BoneWeight()
                    {
                        boneIndex0 = 0, weight0 = 0.3f,
                        boneIndex1 = 1, weight1 = 0.3f,
                        boneIndex2 = 5, weight2 = 0.3f
                    }
                },
                //8
                new Vertex2DMetaData()
                {
                    boneWeight = new BoneWeight()
                    {
                        boneIndex0 = 3, weight0 = 0.5f,
                        boneIndex1 = 5, weight1 = 0.5f
                    }
                },
                //9
                new Vertex2DMetaData()
                {
                    boneWeight = new BoneWeight()
                    {
                        boneIndex0 = 0, weight0 = 0.25f,
                        boneIndex1 = 2, weight1 = 0.25f,
                        boneIndex2 = 4, weight2 = 0.25f,
                        boneIndex3 = 5, weight3 = 0.25f
                    }
                }
            };

            m_ExpectedVertices = new Vertex2DMetaData[m_OriginalVertices.Length];
            m_OriginalVertices.CopyTo(m_ExpectedVertices, 0);

            var spriteBones = new List <SpriteBone>();

            spriteBones.Add(new SpriteBone()
            {
                name = "root", parentId = -1, rotation = Quaternion.identity
            });
            spriteBones.Add(new SpriteBone()
            {
                name = "child_1", parentId = 0, rotation = Quaternion.identity
            });
            spriteBones.Add(new SpriteBone()
            {
                name = "child_1_1", parentId = 1, rotation = Quaternion.identity
            });
            spriteBones.Add(new SpriteBone()
            {
                name = "child_1_2", parentId = 1, rotation = Quaternion.identity
            });
            spriteBones.Add(new SpriteBone()
            {
                name = "child_1_2_1", parentId = 3, rotation = Quaternion.identity
            });
            spriteBones.Add(new SpriteBone()
            {
                name = "child_1_2_2", parentId = 3, rotation = Quaternion.identity
            });

            m_BoneDPMock.GetBones(m_SpriteId).Returns(spriteBones);
            m_MeshDPMock.GetVertices(m_SpriteId).Returns(m_OriginalVertices);

            var uniqueBone = m_CacheManager.GetSpriteBoneRawData(m_SpriteId);

            m_Model = new BoneModel(() => { });
            m_Model.SetRawData(uniqueBone, Vector3.zero);
        }