private void InstantiatePerUnitTypeData(UnitType type) { var minionPrefab = Spawner.GetMinionPrefab(type); var renderingData = minionPrefab.GetComponentInChildren <RenderingDataWrapper>().Value; GameObject bakingObject = GameObject.Instantiate(renderingData.BakingPrefab); SkinnedMeshRenderer renderer = bakingObject.GetComponentInChildren <SkinnedMeshRenderer>(); Material material = renderingData.Material; LodData lodData = renderingData.LodData; var dataPerUnitType = new DataPerUnitType { UnitType = type, BakedData = KeyframeTextureBaker.BakeClips(renderer, GetAllAnimationClips(renderer.GetComponentInParent <Animation>()), lodData), Material = material, }; dataPerUnitType.Drawer = new InstancedSkinningDrawer(dataPerUnitType, dataPerUnitType.BakedData.NewMesh); dataPerUnitType.Lod1Drawer = new InstancedSkinningDrawer(dataPerUnitType, dataPerUnitType.BakedData.lods.Lod1Mesh); dataPerUnitType.Lod2Drawer = new InstancedSkinningDrawer(dataPerUnitType, dataPerUnitType.BakedData.lods.Lod2Mesh); dataPerUnitType.Lod3Drawer = new InstancedSkinningDrawer(dataPerUnitType, dataPerUnitType.BakedData.lods.Lod3Mesh); perUnitTypeDataHolder.Add(type, dataPerUnitType); TransferAnimationData(type); GameObject.Destroy(bakingObject); }
private void InstantiatePerUnitTypeData(UnitType type) { var minionPrefab = Spawner.GetMinionPrefab(type); var renderingData = minionPrefab.GetComponentInChildren <RenderingDataWrapper>().Value; var bakingObject = GameObject.Instantiate(renderingData.BakingPrefab); SkinnedMeshRenderer renderer = bakingObject.GetComponentInChildren <SkinnedMeshRenderer>(); Material material = renderingData.Material; LodData lodData = renderingData.LodData; var dataPerUnitType = new DataPerUnitType { UnitType = type, BakedData = KeyframeTextureBaker.BakeClips(renderer, GetAllAnimationClips(renderer.GetComponentInParent <Animation>()), lodData), Material = material, }; dataPerUnitType.Drawer = new InstancedSkinningDrawer(dataPerUnitType, dataPerUnitType.BakedData.NewMesh); dataPerUnitType.Lod1Drawer = new InstancedSkinningDrawer(dataPerUnitType, dataPerUnitType.BakedData.lods.Lod1Mesh); dataPerUnitType.Lod2Drawer = new InstancedSkinningDrawer(dataPerUnitType, dataPerUnitType.BakedData.lods.Lod2Mesh); dataPerUnitType.Lod3Drawer = new InstancedSkinningDrawer(dataPerUnitType, dataPerUnitType.BakedData.lods.Lod3Mesh); #if !USE_SAFE_JOBS dataPerUnitType.BufferPointers = new NativeArray <IntPtr>(12, Allocator.Persistent); dataPerUnitType.BufferPointers[0] = dataPerUnitType.Drawer.BufferPointers[0]; dataPerUnitType.BufferPointers[1] = dataPerUnitType.Drawer.BufferPointers[1]; dataPerUnitType.BufferPointers[2] = dataPerUnitType.Drawer.BufferPointers[2]; dataPerUnitType.BufferPointers[3] = dataPerUnitType.Lod1Drawer.BufferPointers[0]; dataPerUnitType.BufferPointers[4] = dataPerUnitType.Lod1Drawer.BufferPointers[1]; dataPerUnitType.BufferPointers[5] = dataPerUnitType.Lod1Drawer.BufferPointers[2]; dataPerUnitType.BufferPointers[6] = dataPerUnitType.Lod2Drawer.BufferPointers[0]; dataPerUnitType.BufferPointers[7] = dataPerUnitType.Lod2Drawer.BufferPointers[1]; dataPerUnitType.BufferPointers[8] = dataPerUnitType.Lod2Drawer.BufferPointers[2]; dataPerUnitType.BufferPointers[9] = dataPerUnitType.Lod3Drawer.BufferPointers[0]; dataPerUnitType.BufferPointers[10] = dataPerUnitType.Lod3Drawer.BufferPointers[1]; dataPerUnitType.BufferPointers[11] = dataPerUnitType.Lod3Drawer.BufferPointers[2]; #endif perUnitTypeDataHolder.Add(type, dataPerUnitType); TransferAnimationData(type); GameObject.Destroy(bakingObject); }