Example #1
0
        void ICompositionRoot.OnContextCreated(UnityContext contextHolder)
        {
            var tasksCount = NumberOfEntities.value;

#if FIRST_TIER_EXAMPLE || SECOND_TIER_EXAMPLE || THIRD_TIER_EXAMPLE
            var boidDescriptor = new BoidEntityDescriptor(new[] { new Boid() });
#else
            var boidDescriptor = new BoidEntityDescriptor();
#endif
#if DONT_TRY_THIS_AT_HOME
            for (int i = 0; i < tasksCount; i++)
            {
                GameObject crazyness = new GameObject();
                crazyness.AddComponent <UnityWay>();
            }
#else
            IEnginesRoot   enginesRoot;
            IEntityFactory entityFactory = (enginesRoot = new EnginesRoot(new UnitySumbmissionNodeScheduler())) as IEntityFactory;

            var boidsEngine = new BoidsEngine();
            enginesRoot.AddEngine(boidsEngine);
            _contextNotifier.AddFrameworkDestructionListener(boidsEngine);

            for (int i = 0; i < tasksCount; i++)
            {
                entityFactory.BuildEntity(i, boidDescriptor);
            }

            entityFactory.BuildEntity(0, new GenericEntityDescriptor <PrintTimeNode>(contextHolder.GetComponentInChildren <PrintIteration>()));
#endif
        }
Example #2
0
        void BuildCameraEntity()
        {
            var implementor = UnityEngine.Camera.main.gameObject.AddComponent <CameraImplementor>();

            _entityFactory.BuildEntity <CameraEntityDescriptor>((uint)UnityEngine.Camera.main.GetInstanceID(),
                                                                ECSGroups.ExtraStuff, new[] { implementor });
        }
        void CreateGridEntities()
        {
            var gridSize        = _gridUtils.GetSize();
            var gridInitializer = _entityFactory.BuildEntity <GridEntityDescriptor>(0, GridGroups.Grid);
            var walkableGrid    = NativeDynamicArray.Alloc <bool>(Allocator.Persistent, gridSize.x * gridSize.y);

            for (uint x = 0; x < gridSize.x; x++)
            {
                for (uint y = 0; y < gridSize.y; y++)
                {
                    var cellPosition = new uint2(x, y);
                    var cellIndex    = _gridUtils.CellToEntityId(cellPosition);
                    var isLand       = _gridLand.IsLand(cellPosition);
                    // note: it is probable that we don't need to create the land cells at all,
                    // unless there is some gameplay feature that needs them.
                    var initializer = _entityFactory.BuildEntity <GridCellEntityDescriptor>(
                        cellIndex, isLand ? GridGroups.GridLandGroup : GridGroups.GridWaterGroup
                        );

                    initializer.Init(new GridCellComponent {
                        Position = cellPosition, WorldCenter = _gridUtils.CellToCenterPosition(cellPosition)
                    });

                    walkableGrid.Set(cellIndex, !isLand);
                }
            }

            gridInitializer.Init(new GridComponent {
                WalkableGrid = walkableGrid
            });
        }
        private void BuildTurnEntity()
        {
            var prefabsDictionary = new PrefabsDictionary();
            var currentTurn       = prefabsDictionary.Instantiate("Current Turn");
            var currentTurnImpl   = currentTurn.GetComponent <TurnImpl>();

            entityFactory.BuildEntity <TurnED>(currentTurn.GetInstanceID(), currentTurn.GetComponents <IImplementor>());

            currentTurnImpl.PlayerColor = PlayerColor.BLACK;
        }
Example #5
0
        public void Init()
        {
            _simpleSubmissionEntityViewScheduler = new SimpleEntitiesSubmissionScheduler();
            _enginesRoot = new EnginesRoot(_simpleSubmissionEntityViewScheduler);
            _testEngine  = new TestEngine();

            _enginesRoot.AddEngine(_testEngine);

            _entityFactory = _enginesRoot.GenerateEntityFactory();
            _enginesRoot.GenerateEntityFunctions();

            var id = _idStart;

            for (uint i = 0; i < _groupCount; i++)
            {
                for (int j = 0; j < _entityCountPerGroup; j++)
                {
                    _entityFactory.BuildEntity <EntityDescriptorWithComponentAndViewComponent>(
                        new EGID(id++, _group + i), new object[] { new TestFloatValue(1f), new TestIntValue(1) });

                    _entityFactory.BuildEntity <EntityDescriptorViewComponentWithString>(
                        new EGID(id++, _group + i), new object[] { new TestStringValue("test") });
                }
            }

            _simpleSubmissionEntityViewScheduler.SubmitEntities();

            foreach (var((buffer, count), _) in _testEngine.entitiesDB.QueryEntities <TestEntityViewComponent>())
            {
                for (int i = 0; i < count; i++)
                {
                    buffer[i].TestFloatValue.Value += buffer[i].ID.entityID;
                    buffer[i].TestIntValue.Value   += (int)buffer[i].ID.entityID;
                }
            }

            foreach (var((buffer, count), _) in _testEngine
                     .entitiesDB.QueryEntities <TestEntityComponent>())
            {
                for (int i = 0; i < count; i++)
                {
                    buffer[i].floatValue = 1 + buffer[i].ID.entityID;
                    buffer[i].intValue   = 1 + (int)buffer[i].ID.entityID;
                }
            }

            foreach (var((buffer, count), _) in _testEngine
                     .entitiesDB.QueryEntities <TestEntityViewComponentString>())
            {
                for (int i = 0; i < count; i++)
                {
                    buffer[i].TestStringValue.Value = (1 + buffer[i].ID.entityID).ToString();
                }
            }
        }
Example #6
0
        public void Build(IEntityFactory entityFactory)
        {
            EntityInitializer initializer;

            switch (_colliderType)
            {
            case ColliderType.Box:
                if (_isKinematic)
                {
                    initializer = entityFactory.BuildEntity <RigidBodyWithBoxColliderDescriptor>(
                        EgidFactory.GetNextId(), GameGroups.KinematicRigidBodyWithBoxColliders.BuildGroup);
                }
                else
                {
                    initializer = entityFactory.BuildEntity <RigidBodyWithBoxColliderDescriptor>(
                        EgidFactory.GetNextId(), GameGroups.DynamicRigidBodyWithBoxColliders.BuildGroup);
                }
                break;

            case ColliderType.Circle:
                if (_isKinematic)
                {
                    initializer = entityFactory.BuildEntity <RigidBodyWithCircleColliderDescriptor>(
                        EgidFactory.GetNextId(), GameGroups.KinematicRigidBodyWithCircleColliders.BuildGroup);
                }
                else
                {
                    initializer = entityFactory.BuildEntity <RigidBodyWithCircleColliderDescriptor>(
                        EgidFactory.GetNextId(), GameGroups.DynamicRigidBodyWithCircleColliders.BuildGroup);
                }
                break;

            default:
                throw new ArgumentOutOfRangeException($"Unknown {_colliderType}");
            }

            initializer.Init(new TransformEntityComponent(_position, _position));
            initializer.Init(new RigidbodyEntityComponent(_speed, _direction, FixedPointVector2.Zero, FixedPoint.Zero
                                                          , _restitution, _mass, _isKinematic));

            switch (_colliderType)
            {
            case ColliderType.Box:
                initializer.Init(new BoxColliderEntityComponent(_boxColliderSize, _boxColliderCentre));
                break;

            case ColliderType.Circle:
                initializer.Init(new CircleColliderEntityComponent(_circleColliderRadius, _circleColliderCentre));
                break;

            default:
                throw new ArgumentOutOfRangeException($"Unknown {_colliderType}");
            }
        }
        private void BuildTurnEntity()
        {
            var prefabsDictionary = new PrefabsDictionary();
            var currentTurn       = prefabsDictionary.Instantiate("Current Turn");
            var currentTurnImpl   = currentTurn.GetComponent <TurnImpl>();

            entityFactory.BuildEntity <TurnED>(currentTurn.GetInstanceID(), currentTurn.GetComponents <IImplementor>());

            currentTurnImpl.PlayerColor = PlayerColor.BLACK;
            currentTurnImpl.IsInitialArrangementInEffect = true; // TODO Later set based on reading from save game file or new game option
        }
        public override void SetupEntities(IEntityFactory factory, IEntityFunctions functions)
        {
            stubParent = new LifterParentStub
            {
            };

            stubChild = new LiftableChildStub
            {
                Id = 20
            };

            factory.BuildEntity <LifterStubber>(10, new object[] { stubParent });
            factory.BuildEntity <LifterChildStubber>(20, new object[] { stubChild });
        }
Example #9
0
        public void CreatePiece(
            PlayerColor playerOwner,
            PieceType front,
            PieceType back,
            PieceSide side,
            int fileNum,
            int rankNum)
        {
            var piece                   = prefabsDictionary.Instantiate("Piece");
            var pieceImpl               = piece.GetComponent <PieceImpl>();
            var pieceLocationMoveImpl   = piece.GetComponent <PieceLocationMoveImpl>();
            var pieceHighlightOwnerImpl = piece.GetComponent <PieceHighlightOwnerImpl>();

            entityFactory.BuildEntity <PieceED>(piece.GetInstanceID(), piece.GetComponents <IImplementor>());

            pieceImpl.Front     = front;
            pieceImpl.Back      = back;
            pieceImpl.PieceType = side == PieceSide.FRONT ? front : back;
            pieceImpl.Direction = DirectionService.CalcDirection(playerOwner);
            pieceHighlightOwnerImpl.PlayerColor = playerOwner;

            Vector2 location = CommonService.CalcTransformPosition(fileNum, rankNum);

            piece.transform.position                = new Vector3(location.x, location.y, 1);
            pieceLocationMoveImpl.Location          = new Vector2(fileNum, rankNum);
            pieceHighlightOwnerImpl.PlayChangeColor = true;
        }
        public override IList <ClientTransaction> FindPending()
        {
            List <ClientTransaction> transactions = new List <ClientTransaction>();
            StringBuilder            builder      = new StringBuilder(100);

            builder.Append("SELECT ctd.ClientTransactionID, ctd.TransactionType, ctd.ObjectData ");
            builder.Append("FROM ClientTransaction ct ");
            builder.Append("INNER JOIN ClientTransactionDetail ctd ");
            builder.Append("ON ct.ClientTransactionID = ctd.ClientTransactionID ");
            builder.Append("WHERE ct.ReconciliationResult = 1;");
            using (DbCommand command = database.GetSqlStringCommand(builder.ToString()))
            {
                using (IDataReader reader = database.ExecuteReader(command))
                {
                    IEntityFactory <ClientTransaction> entityFactory =
                        EntityFactoryBuilder.BuildFactory <ClientTransaction>();
                    while (reader.Read())
                    {
                        transactions.Add(entityFactory.BuildEntity(reader));
                    }
                }
            }

            return(transactions);
        }
Example #11
0
        public IEnumerator Tick()
        {
            if (_initialTimer <= 0)
            {
                yield break;
            }

            if (string.IsNullOrEmpty(_timerHudReference.AssetGUID) == false)
            {
                _runner.Pause();
                yield return(_timerHudReference.LoadAssetTask <GameObject>());

                // Create entity.
                var(go, implementors) = _gameObjectFactory.BuildForEntity(_timerHudReference.Asset as GameObject);
                var initializer = _factory.BuildEntity <MatchDescriptor>(0, MatchGroups.Match, implementors);
                initializer.Init(new TimerComponent {
                    TimeLeft = _initialTimer
                });

                yield return(null);

                _runner.Resume();
            }

            while (true)
            {
                if (Process())
                {
                    break;
                }
                yield return(null);
            }

            _runner.Pause();
        }
Example #12
0
        static uint InternalBuildAll(uint startIndex, IEntityDescriptorHolder descriptorHolder,
                                     IEntityFactory factory, ExclusiveGroup group, IImplementor[] implementors, string groupNamePostfix)
        {
            ExclusiveGroupStruct realGroup = group;

            if (string.IsNullOrEmpty(descriptorHolder.groupName) == false)
            {
                realGroup = ExclusiveGroup.Search(!string.IsNullOrEmpty(groupNamePostfix)
                    ? $"{descriptorHolder.groupName}{groupNamePostfix}"
                    : descriptorHolder.groupName);
            }

            EGID egid;
            var  holderId = descriptorHolder.id;

            if (holderId == 0)
            {
                egid = new EGID(startIndex++, realGroup);
            }
            else
            {
                egid = new EGID(holderId, realGroup);
            }

            var init = factory.BuildEntity(egid, descriptorHolder.GetDescriptor(), implementors);

            init.Init(new EntityHierarchyComponent(group));

            return(startIndex);
        }
        public static uint CreateAll <T>(uint startIndex, ExclusiveGroup group, Transform contextHolder,
                                         IEntityFactory factory) where T : MonoBehaviour, IEntityDescriptorHolder
        {
            var holders = contextHolder.GetComponentsInChildren <T>(true);

            foreach (var holder in holders)
            {
                var implementors = holder.GetComponents <IImplementor>();

                ExclusiveGroup.ExclusiveGroupStruct realGroup = group;

                if (string.IsNullOrEmpty(holder.groupName) == false)
                {
                    realGroup = ExclusiveGroup.Search(holder.groupName);
                }

                EGID egid;
                var  holderId = holder.id;
                if (holderId == 0)
                {
                    egid = new EGID(startIndex++, realGroup);
                }
                else
                {
                    egid = new EGID(holderId, realGroup);
                }

                var init = factory.BuildEntity(egid, holder.GetDescriptor(), implementors);

                init.Init(new EntityHierarchyStruct(group));
            }

            return(startIndex);
        }
Example #14
0
        public static EntityStructInitializer CreateWithEntity <T>(EGID ID, Transform contextHolder,
                                                                   IEntityFactory factory, out T holder) where T : MonoBehaviour, IEntityDescriptorHolder
        {
            holder = contextHolder.GetComponentInChildren <T>(true);
            var implementors = holder.GetComponents <IImplementor>();

            return(factory.BuildEntity(ID, holder.GetDescriptor(), implementors));
        }
Example #15
0
 public void OnContextCreated(UnityContext contextHolder)
 {
     IEntityDescriptorHolder[] entities = contextHolder.GetComponentsInChildren <IEntityDescriptorHolder>();
     for (int i = 0; i < entities.Length; i++)
     {
         _entityFactory.BuildEntity((entities[i] as MonoBehaviour).gameObject.GetInstanceID(), entities[i].BuildDescriptorType());
     }
 }
Example #16
0
        public static EntityComponentInitializer Create <T>(EGID ID, Transform contextHolder,
                                                            IEntityFactory factory, bool searchImplementorsInChildren = false)
            where T : MonoBehaviour, IEntityDescriptorHolder
        {
            var holder       = contextHolder.GetComponentInChildren <T>(true);
            var implementors = searchImplementorsInChildren == false?holder.GetComponents <IImplementor>() : holder.GetComponentsInChildren <IImplementor>(true);

            return(factory.BuildEntity(ID, holder.GetDescriptor(), implementors));
        }
Example #17
0
        public override void SetupEntities(IEntityFactory factory, IEntityFunctions functions)
        {
            // another way to create entities it to search for existing Game Objects,
            // as you see it is perfectly valid for Implementors to be MonoBehaviours
            // attached to some gameobject

            liftableStub = FindObjectOfType <SystemTestLiftableImplementor>();
            lifterStub   = FindObjectOfType <SystemTestLifterImplementor>();

            // we start the game with the liftable parented to the lifter

            liftableStub.Id      = 2;
            liftableStub.Carrier = 1;
            lifterStub.CarriedThings.Add(2);

            factory.BuildEntity <LifterStubber>(1, new object[] { lifterStub });
            factory.BuildEntity <LiftableStubber>(2, new object[] { liftableStub });
        }
Example #18
0
        private void Fire(ITransformComponent transform, float lauchForce)
        {
            GameObject go = _GameObjectFactory.Build(_ShellPrefab);

            go.transform.position = transform.Position;
            go.transform.rotation = transform.Rotation;
            go.GetComponent <Rigidbody>().velocity = lauchForce * transform.Forward;
            _EntityFactory.BuildEntity <ShellEntityDescriptor>(go.GetInstanceID(), new object[] { });
        }
        public void TestEntityCollection1()
        {
            void TestNotAcceptedEntityComponent()
            {
                _entityFactory.BuildEntity <EntityDescriptorViewComponentWithCustomStruct>(
                    new EGID(0, _group), new object[] { new TestCustomStructWithString("test") });
            }

            Assert.Throws <TypeInitializationException>(TestNotAcceptedEntityComponent);
        }
Example #20
0
        private void CreateTile(Vector2 position, int fileNum, int rankNum)
        {
            var tile     = prefabsDictionary.Instantiate("Board Tile");
            var tileImpl = tile.GetComponent <TileImpl>();

            entityFactory.BuildEntity <TileED>(tile.GetInstanceID(), tile.GetComponents <IImplementor>());

            tile.transform.position = new Vector3(position.x, position.y, 0);
            tileImpl.Location       = new Vector2(fileNum, rankNum);
        }
        public static T Create <T>(EGID ID, Transform contextHolder,
                                   IEntityFactory factory) where T : MonoBehaviour, IEntityDescriptorHolder
        {
            var holder       = contextHolder.GetComponentInChildren <T>(true);
            var implementors = holder.GetComponents <IImplementor>();

            factory.BuildEntity(ID, holder.GetDescriptor(), implementors);

            return(holder);
        }
Example #22
0
    public void OnContextCreated(UnityContext contextHolder)
    {
        IEntityDescriptorHolder[] entities = contextHolder.GetComponentsInChildren <IEntityDescriptorHolder>();

        foreach (IEntityDescriptorHolder entity in entities)
        {
            IEntityDescriptorInfo entityInfo = entity.RetrieveDescriptor();
            m_EntityFactory.BuildEntity(((MonoBehaviour)entity).gameObject.GetInstanceID(), entityInfo,
                                        (entity as MonoBehaviour).GetComponentsInChildren <IImplementor>());
        }

        GameObject          player       = Camera.main.gameObject;
        List <IImplementor> implementors = new List <IImplementor>();

        player.GetComponents(implementors);
        implementors.Add(new PlayerInputImplementor());

        m_EntityFactory.BuildEntity <PlayerEntity>(player.GetInstanceID(), implementors.ToArray());
    }
Example #23
0
        private void SetupCamera(UnityContext contextHolder)
        {
            CameraEntityDescriptorHolder cameraEntityDescriptor = contextHolder.GetComponentInChildren <CameraEntityDescriptorHolder>();
            EntityDescriptorInfo         entityDescriptor       = cameraEntityDescriptor.RetrieveDescriptor();

            _EntityFactory.BuildEntity(
                cameraEntityDescriptor.gameObject.GetInstanceID(),
                entityDescriptor,
                cameraEntityDescriptor.GetComponentsInChildren <IImplementor>()
                );
        }
        public void Setup()
        {
            _defaultWorld                      = new DefaultWorld(EntityCount);
            _defaultEntitySet                  = _defaultWorld.GetEntities().With <DefaultComponent>().AsSet();
            _defaultRunner                     = new DefaultParallelRunner(Environment.ProcessorCount);
            _defaultSystem                     = new DefaultEcsSystem(_defaultWorld);
            _defaultMultiSystem                = new DefaultEcsSystem(_defaultWorld, _defaultRunner);
            _defaultEntityComponentSystem      = new DefaultEcsEntityComponentSystem(_defaultWorld);
            _defaultMultiEntityComponentSystem = new DefaultEcsEntityComponentSystem(_defaultWorld, _defaultRunner);
            _defaultComponentSystem            = new DefaultEcsComponentSystem(_defaultWorld);
            _defaultComponentMultiSystem       = new DefaultEcsComponentSystem(_defaultWorld, _defaultRunner);
            _defaultGeneratorSystem            = new DefaultEcsGeneratorSystem(_defaultWorld);
            _defaultGeneratorMultiSystem       = new DefaultEcsGeneratorSystem(_defaultWorld, _defaultRunner);

            _entitasWorld       = new Context <EntitasEntity>(1, () => new EntitasEntity());
            _entitasSystem      = new EntitasSystem(_entitasWorld);
            _entitasMultiSystem = new EntitasSystem(_entitasWorld, Environment.ProcessorCount);

            _monoWorld = new WorldBuilder().AddSystem(new MonoSystem()).Build();
            _time      = new GameTime();

            _leoWorld   = new LeoWorld();
            _leoSystem  = new LeoSystem();
            _leoSystems = new LeoSystems(_leoWorld).Add(_leoSystem);
            _leoSystems.ProcessInjects().Init();

            SimpleEntitiesSubmissionScheduler sveltoScheduler = new SimpleEntitiesSubmissionScheduler();

            _sveltoWorld  = new EnginesRoot(sveltoScheduler);
            _sveltoSystem = new SveltoSystem();
            _sveltoWorld.AddEngine(_sveltoSystem);
            IEntityFactory sveltoFactory = _sveltoWorld.GenerateEntityFactory();

            for (int i = 0; i < EntityCount; ++i)
            {
                DefaultEntity defaultEntity = _defaultWorld.CreateEntity();
                defaultEntity.Set <DefaultComponent>();

                EntitasEntity entitasEntity = _entitasWorld.CreateEntity();
                entitasEntity.AddComponent(0, new EntitasComponent());

                MonoEntity monoEntity = _monoWorld.CreateEntity();
                monoEntity.Attach(new MonoComponent());

                LeoEntity leoEntity = _leoWorld.NewEntity();
                leoEntity.Get <LeoComponent>();

                sveltoFactory.BuildEntity <SveltoEntity>((uint)i, _sveltoGroup);
            }

            sveltoScheduler.SubmitEntities();
        }
Example #25
0
        private void BuildGridFromScene(UnityContext unityContext, IEntityFactory entityFactory)
        {
            var entities = unityContext.GetComponentsInChildren <IEntityDescriptorHolder>();

            foreach (var entityHolder in entities)
            {
                entityFactory.BuildEntity(
                    new EGID((uint)((MonoBehaviour)entityHolder).gameObject.GetInstanceID(), EcsGroups.GridGroup),
                    entityHolder.GetDescriptor(),
                    ((MonoBehaviour)entityHolder).GetComponents <IImplementor>()
                    );
            }
        }
Example #26
0
        public override void SetupEntities(IEntityFactory factory, IEntityFunctions functions)
        {
            //create the "stub implementor" (note this could actually be used already in gameplay,
            // but never mix testing stuff inside gamemplay)

            stub = new MovingPositionStub
            {
                Position = new Vector2(2, 2),
                Movement = new Vector2(3, 3)
            };

            factory.BuildEntity <MovingPositionStubber>(1, new object[] { stub });
        }
Example #27
0
        public static EntityComponentInitializer Create <T>(EGID ID, Transform contextHolder, IEntityFactory factory,
                                                            out T holder, bool searchImplementorsInChildren = false)
            where T : MonoBehaviour, IEntityDescriptorHolder
        {
            holder = contextHolder.GetComponentInChildren <T>(true);
            if (holder == null)
            {
                throw new Exception($"Could not find holder {typeof(T).Name} in {contextHolder.name}");
            }
            var implementors = searchImplementorsInChildren == false?holder.GetComponents <IImplementor>() : holder.GetComponentsInChildren <IImplementor>(true);

            return(factory.BuildEntity(ID, holder.GetDescriptor(), implementors));
        }
        public EntityComponentInitializer BuildDeserializedEntity(EGID egid,
                                                                  ISerializationData serializationData,
                                                                  ISerializableEntityDescriptor entityDescriptor,
                                                                  int serializationType,
                                                                  IEntitySerialization entitySerialization)
        {
            var initializer = _factory.BuildEntity <T>(egid, _implementors);

            entitySerialization.DeserializeEntityComponents(serializationData, entityDescriptor, ref initializer,
                                                            serializationType);

            return(initializer);
        }
Example #29
0
        public void Build(ClientPlayerSpawnData clientPlayerSpawnData)
        {
            int spawnPointIndex = UnityEngine.Random.Range(0, clientPlayerSpawnData.spawnPoints.Length);

//            var go = PhotonNetwork.Instantiate("ClientPlayer", new Vector3(Random.RandomRange(-3.0f, 3.0f),0,Random.RandomRange(-3.0f, 3.0f)), Quaternion.identity,0 );
            var go           = PhotonNetwork.Instantiate(clientPlayerSpawnData.clientPlayerPrefab.name, clientPlayerSpawnData.spawnPoints[spawnPointIndex].position, Quaternion.identity, 0);
            var implementors = go.GetComponentsInChildren <IImplementor>();
            var initializer  = _entityFactory.BuildEntity <PlayerEntityDescriptor>(go.GetInstanceID(), implementors);

            var transform = go.transform;
            var spawnInfo = clientPlayerSpawnData.spawnPoints[spawnPointIndex];

//            transform.position = spawnInfo.position;
//            transform.rotation = spawnInfo.rotation;

            var playerProfile = new Profile(PhotonNetwork.playerName);
            var playerInfo    = new PlayerInfoDataStruct {
                playerInfo = playerProfile
            };

            initializer.Init(playerInfo);
        }
        public override void SetupEntities(IEntityFactory factory, IEntityFunctions functions)
        {
            stubParent = new LifterMovementStub
            {
                Movement = new Vector2(2, 2)
            };

            stubParent.CarriedThings.Add(20);

            stubCarriedChild = new LiftableMovementStub
            {
                Movement = new Vector2(3, 3)
            };

            stubAloneChild = new LiftableMovementStub
            {
                Movement = new Vector2(3, 3)
            };

            factory.BuildEntity <LifterStubber>(10, new object[] { stubParent });
            factory.BuildEntity <LifterChildStubber>(20, new object[] { stubCarriedChild });
            factory.BuildEntity <LifterChildStubber>(30, new object[] { stubAloneChild });
        }