Example #1
0
        public Entity SpawnEntity(EntityFactory factory, IntVector2 position, IntVector2 orientation)
        {
            System.Console.WriteLine($"Creating entity of factory id : {factory.id}");

            var entity = factory.Instantiate();

            entity.id = Registry.Global.RuntimeEntities.Add(entity);

            if (entity.TryInitTransform(position, orientation, out var transform))
            {
                Grid.AddTransformNoEvent(transform);
                factory.InitInWorld(transform);
            }

            if (entity.TryInitActing(out var acting))
            {
                State.AddActor(acting);
            }

            if (entity.TryGetTicking(out var ticking))
            {
                ticking.Init(entity);
                State.AddTicking(ticking);
            }

            Chains.Get(SpawnEntityIndex).Pass(entity);
            return(entity);
        }