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> >(); }
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); }