public void Component_T_constraint_sets_AndOr_constraints_to_empty_list() { var constraint = Constraint.Component <Position.Component>(); Assert.AreEqual(0, constraint.AsQueryConstraint().AndConstraint.Count); Assert.AreEqual(0, constraint.AsQueryConstraint().OrConstraint.Count); }
static void AddSymbolicTowerQuery <T>(InterestTemplate interest) where T : ISpatialComponentData { var towerQuery = InterestQuery.Query( Constraint.All( Constraint.Component(SymbolicTower.ComponentId), Constraint.RelativeSphere(FixedParams.WorldInterestLimit))) .FilterResults(Position.ComponentId, SymbolicTower.ComponentId, Metadata.ComponentId) .WithMaxFrequencyHz(FixedParams.WorldInterestFrequency); interest.AddQueries <T>(towerQuery); }
static void AddMinimapQuery <T>(InterestTemplate interest) where T : ISpatialComponentData { var minimapQuery = InterestQuery.Query( Constraint.All( Constraint.Any(Constraint.Component(CommanderStatus.ComponentId), Constraint.Component(StrongholdStatus.ComponentId), Constraint.Component(HeadQuarters.ComponentId)), Constraint.RelativeSphere(FixedParams.WorldInterestLimit))) .FilterResults(Position.ComponentId, BaseUnitStatus.ComponentId, TransformInternal.ComponentId) .WithMaxFrequencyHz(FixedParams.WorldInterestFrequency); interest.AddQueries <T>(minimapQuery); }
void Test() { var playerQuery = InterestQuery.Query( Constraint.All( Constraint.Component <PlayerInfo.Component>(), Constraint.RelativeSphere(20)) ).FilterResults(Position.ComponentId, PlayerInfo.ComponentId); var minimapQuery = InterestQuery.Query( Constraint.All( Constraint.Component <MinimapRepresentaion.Component>(), Constraint.RelativeBox(50, double.PositiveInfinity, 50)) ).FilterResults(Position.ComponentId, MinimapRepresentaion.ComponentId); var interestTemplate = InterestTemplate.Create() .AddQueries <PlayerControls.Component>(playerQuery, minimapQuery); var playerTemplate = new EntityTemplate(); playerTemplate.AddComponent(interestTemplate.ToSnapshot(), WorkerUtils.UnityGameLogic); }
public static EntityTemplate Player(string workerId, byte[] args) { var client = EntityTemplate.GetWorkerAccessAttribute(workerId); var(spawnPosition, spawnYaw, spawnPitch) = SpawnPoints.GetRandomSpawnPoint(); var serverResponse = new ServerResponse { Position = spawnPosition.ToIntAbsolute() }; var rotationUpdate = new RotationUpdate { Yaw = spawnYaw.ToInt1k(), Pitch = spawnPitch.ToInt1k() }; var pos = new Position.Snapshot { Coords = spawnPosition.ToSpatialCoordinates() }; var serverMovement = new ServerMovement.Snapshot { Latest = serverResponse }; var clientMovement = new ClientMovement.Snapshot { Latest = new ClientRequest() }; var clientRotation = new ClientRotation.Snapshot { Latest = rotationUpdate }; var shootingComponent = new ShootingComponent.Snapshot(); var gunComponent = new GunComponent.Snapshot { GunId = PlayerGunSettings.DefaultGunIndex }; var gunStateComponent = new GunStateComponent.Snapshot { IsAiming = false }; var healthComponent = new HealthComponent.Snapshot { Health = PlayerHealthSettings.MaxHealth, MaxHealth = PlayerHealthSettings.MaxHealth, }; var healthRegenComponent = new HealthRegenComponent.Snapshot { CooldownSyncInterval = PlayerHealthSettings.SpatialCooldownSyncInterval, DamagedRecently = false, RegenAmount = PlayerHealthSettings.RegenAmount, RegenCooldownTimer = PlayerHealthSettings.RegenAfterDamageCooldown, RegenInterval = PlayerHealthSettings.RegenInterval, RegenPauseTime = 0, }; var sessionQuery = InterestQuery.Query(Constraint.Component <Session.Component>()); var checkoutQuery = InterestQuery.Query(Constraint.RelativeCylinder(150)); var interestTemplate = InterestTemplate.Create().AddQueries <ClientMovement.Component>(sessionQuery, checkoutQuery); var interestComponent = interestTemplate.ToSnapshot(); var playerName = Encoding.ASCII.GetString(args); var playerStateComponent = new PlayerState.Snapshot { Name = playerName, Kills = 0, Deaths = 0, }; var playerResComponent = new Pickups.PlayerRes.Snapshot(0); var soldierManagerComponent = new Soldiers.SoldierManager.Snapshot(); var template = new EntityTemplate(); template.AddComponent(pos, WorkerUtils.UnityGameLogic); template.AddComponent(new Metadata.Snapshot { EntityType = "Player" }, WorkerUtils.UnityGameLogic); template.AddComponent(serverMovement, WorkerUtils.UnityGameLogic); template.AddComponent(clientMovement, client); template.AddComponent(clientRotation, client); template.AddComponent(shootingComponent, client); template.AddComponent(gunComponent, WorkerUtils.UnityGameLogic); template.AddComponent(gunStateComponent, client); template.AddComponent(healthComponent, WorkerUtils.UnityGameLogic); template.AddComponent(healthRegenComponent, WorkerUtils.UnityGameLogic); template.AddComponent(playerStateComponent, WorkerUtils.UnityGameLogic); template.AddComponent(interestComponent, WorkerUtils.UnityGameLogic); template.AddComponent(playerResComponent, WorkerUtils.UnityGameLogic); template.AddComponent(soldierManagerComponent, WorkerUtils.UnityGameLogic); PlayerLifecycleHelper.AddPlayerLifecycleComponents(template, workerId, WorkerUtils.UnityGameLogic); template.SetReadAccess(WorkerUtils.UnityClient, WorkerUtils.UnityGameLogic, WorkerUtils.MobileClient); template.SetComponentWriteAccess(EntityAcl.ComponentId, WorkerUtils.UnityGameLogic); return(template); }
private static void SwitchType(EntityTemplate template, UnitType type, string writeAccess) { switch (type) { case UnitType.Soldier: template.AddComponent(new BulletComponent.Snapshot(), writeAccess); template.AddComponent(new BaseUnitPosture.Snapshot { Posture = new PostureInfo { Datas = new Dictionary <PosturePoint, PostureData>() } }, writeAccess); break; case UnitType.Commander: template.AddComponent(new BulletComponent.Snapshot(), writeAccess); template.AddComponent(new CommanderStatus.Snapshot { Order = new OrderPair { Self = OrderType.Idle, Upper = OrderType.Idle }, Rank = 0, }, writeAccess); template.AddComponent(new CommanderTeam.Snapshot { FollowerInfo = new FollowerInfo { Followers = new List <EntityId>(), UnderCommanders = new List <EntityId>() }, SuperiorInfo = new SuperiorInfo() }, writeAccess); template.AddComponent(new CommanderSight.Snapshot { WarPowers = new List <WarPower>() }, writeAccess); template.AddComponent(new CommanderAction.Snapshot { ActionType = CommandActionType.None }, writeAccess); template.AddComponent(new BaseUnitPosture.Snapshot { Posture = new PostureInfo { Datas = new Dictionary <PosturePoint, PostureData>() } }, writeAccess); template.AddComponent(new DominationDevice.Snapshot { Type = DominationDeviceType.Capturing, Speed = 0.0f, }, writeAccess); break; case UnitType.Stronghold: template.AddComponent(new StrongholdUnitStatus.Snapshot(), writeAccess); template.AddComponent(new UnitFactory.Snapshot { FollowerOrders = new List <FollowerOrder>(), SuperiorOrders = new List <SuperiorOrder>() }, writeAccess); template.AddComponent(new UnitArmyObserver.Snapshot(), writeAccess); template.AddComponent(new DominationStamina.Snapshot { SideStaminas = new Dictionary <UnitSide, float>() }, writeAccess); break; case UnitType.HeadQuarter: //template.AddComponent(new HeadQuarters.Snapshot { UpperRank = 0, // FactoryDatas = new FactoryMap { Reserves = new Dictionary<EntityId,ReserveMap>() }, // Orders = new List<OrganizeOrder>() }, writeAccess); template.AddComponent(new CommandersManager.Snapshot { State = CommanderManagerState.None, CommanderDatas = new Dictionary <EntityId, TeamInfo>() }, writeAccess); var strongholdQuery = InterestQuery.Query(Constraint.Component <StrongholdUnitStatus.Component>()) .FilterResults(Position.ComponentId, BaseUnitStatus.ComponentId); var interestTemplate = InterestTemplate.Create().AddQueries <CommandersManager.Component>(strongholdQuery); template.AddComponent(interestTemplate.ToSnapshot(), writeAccess); break; } }