Exemple #1
0
    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);
    }
Exemple #2
0
    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);
    }