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