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