private BakedMeshData[] Create(GameObject prototype) { var meshRenderers = prototype.GetComponentsInChildren <SkinnedMeshRenderer>(); BakedMeshData[] bakery = new BakedMeshData[meshRenderers.Length]; for (int i = 0; i < meshRenderers.Length; i++) { bakery[i] = new BakeryFactory(prototype, meshRenderers[i]).Create().BakeClips(clips, frameRate); } return(bakery); }
void Start() { // Make sure use the same class name (file name) here! BakedMeshData readMesh = new BakedMeshData(); GeneratedMesh = readMesh.GenerateMeshFromFile(); // apply MeshFilter mf = GetComponent <MeshFilter> (); if (mf) { mf.mesh = GeneratedMesh; } }
protected override void OnUpdate() { var ecb = _endSimulationEcbSystem.CreateCommandBuffer(); List <AnimInitComponent> initComponents = new List <AnimInitComponent>(); EntityManager.GetAllUniqueSharedComponentData(initComponents); AnimationData animData = new AnimationData(); foreach (AnimInitComponent aic in initComponents) { Debug.Log($"{aic.GetHashCode()} {aic.bakery != null}"); bool got = false; Entities.WithName("AnimationInit") .WithSharedComponentFilter(aic) .WithoutBurst() .ForEach((Entity e, in AnimInitComponent init) => { if (!got) { if (!_animComponents.TryGetValue(aic, out animData)) { BakedMeshData[] baked = new BakedMeshData[aic.bakery.Length]; for (int i = 0; i < baked.Length; i++) { Material m = Material.Instantiate(aic.bakery[i].Material); baked[i] = BakedMeshData.Copy(aic.bakery[i], m); } animData = new AnimationData { baked = baked, }; _animComponents[aic] = animData; } got = true; } ecb.AddSharedComponent(e, animData); ecb.RemoveComponent <AnimInitComponent>(e); }) .Run(); } _endSimulationEcbSystem.AddJobHandleForProducer(Dependency); }