void ResetQuery() { Debug.LogWarning("called reset"); var query = Query.HasComponent <ClientConnection>().ReturnOnlyEntityIds(); Debug.LogWarning("queryied"); SpatialOS.Commands.SendQuery(StatusWriter, query) .OnSuccess(result => { Debug.LogWarning("Found " + result.EntityCount + " nearby entities with a health component"); if (result.EntityCount < 1) { return; } Map <EntityId, Entity> resultMap = result.Entities; foreach (EntityId id in resultMap.Keys) { Entity entity = SpatialOS.GetLocalEntity(id); if (entity != null) { Debug.LogWarning("entity found"); SpatialOS.Commands.SendCommand(StatusWriter, Status.Commands.GameWon.Descriptor, new Winner(PlayerDataReader.Data.name), id) .OnSuccess(OnGameWinSuccess) .OnFailure(OnGameWinFailure); //StatusWriter.Send(new Status.Update().AddGameWon(new Win(gameObject.EntityId().ToString()))); } } }) .OnFailure(errorDetails => Debug.LogWarning("Query failed with error: " + errorDetails)); }
private void OnApplicationQuit() { if (SpatialOS.IsConnected) { SpatialOS.Disconnect(); } }
// Called when the Play button is pressed in Unity. public void Start() { Configuration.Networking.LinkProtocol = NetworkConnectionType.Tcp; Configuration.Networking.TcpMultiplexLevel = 1; SpatialOS.ApplyConfiguration(Configuration); Time.fixedDeltaTime = 1.0f / SimulationSettings.FixedFramerate; // Distinguishes between when the Unity is running as a client or a server. switch (SpatialOS.Configuration.WorkerPlatform) { case WorkerPlatform.UnityWorker: Application.targetFrameRate = SimulationSettings.TargetServerFramerate; SpatialOS.OnDisconnected += reason => Application.Quit(); SpatialOS.Connect(gameObject); break; case WorkerPlatform.UnityClient: Application.targetFrameRate = SimulationSettings.TargetClientFramerate; SpatialOS.OnConnected += CreatePlayer; SceneManager.LoadSceneAsync(BuildSettings.SplashScreenScene, LoadSceneMode.Additive); break; } // Enable communication with the SpatialOS layer of the simulation. SpatialOS.Connect(gameObject); }
private void Start() { List <string> assetsToPreCache = new List <string> { SimulationSettings.PlayerPrefabName, SimulationSettings.NPCPrefabName, SimulationSettings.NPCWizardPrefabName, SimulationSettings.HQPrefabName, SimulationSettings.TreePrefabName, SimulationSettings.BarracksPrefabName, SimulationSettings.PlayerSpawnerPrefabName }; SpatialOS.AssetsToPrecache = assetsToPreCache; SpatialOS.ApplyConfiguration(Configuration); Time.fixedDeltaTime = 1.0f / SimulationSettings.FixedFramerate; switch (SpatialOS.Configuration.WorkerPlatform) { case WorkerPlatform.UnityWorker: Application.targetFrameRate = SimulationSettings.TargetFramerateUnityWorker; SpatialOS.OnDisconnected += reason => Application.Quit(); SpatialOS.Connect(gameObject); break; case WorkerPlatform.UnityClient: SceneManager.LoadScene(SimulationSettings.SplashScreenScene, LoadSceneMode.Additive); Application.targetFrameRate = SimulationSettings.TargetFramerate; SpatialOS.OnConnected += ClientPlayerSpawner.SpawnPlayer; break; } }
private void ConnectionTimeout() { if (SpatialOS.IsConnected) { SpatialOS.Disconnect(); } instance.NotReadyWarning.SetActive(true); EnableConnectButtons(); }
private void OnApplicationQuit() { if (SpatialOS.IsConnected) { SpatialOS.Commands.DeleteEntity(clientAuthorityCheck, gameObject.EntityId()) .OnFailure(OnDeleteFailure); SpatialOS.Disconnect(); } }
private void ConnectionTimeout() { if (SpatialOS.IsConnected) { SpatialOS.Disconnect(); } ConnectButton.interactable = true; }
private void OnApplicationQuit() { if (SpatialOS.IsConnected) { Debug.Log("Bootstrap disconnecting from SpatialOS."); SpatialOS.OnConnected -= OnConnected; SpatialOS.Disconnect(); } }
private void ConnectionTimeout() { if (SpatialOS.IsConnected) { SpatialOS.Disconnect(); } NotReadyWarning.SetActive(true); ConnectButton.interactable = true; }
private void FetchAndCachePlatformBounds(EntityId entityId) { var PlatformBoundsComponent = SpatialOS.GetLocalEntityComponent <PlatformBounds>(entityId); if (PlatformBoundsComponent == null) { Debug.LogError("Unable to find platform bounds component for entity: " + entityId.Id); } _cachedPlatformBoundsData = PlatformBoundsComponent.Get().Value; }
private void OnApplicationQuit() { if (SpatialOS.IsConnected) { if (SpatialOS.Configuration.EnginePlatform == EnginePlatform.Client) { ClientPlayerSpawner.DeletePlayer(); } SpatialOS.Disconnect(); } }
void DroneMapPrune() { if (!ControllerWriter.Data.initialised) { return; } DeliveryInfo deliveryInfo; List <EntityId> toPrune = new List <EntityId>(); foreach (EntityId droneId in deliveriesMap.Keys) { if (deliveriesMap.TryGetValue(droneId, out deliveryInfo)) { if (Time.time > deliveryInfo.latestCheckinTime) { Debug.LogErrorFormat("Pruning Drone for taking too long. Drone {0} Delivered: {1}", droneId, deliveryInfo.returning); toPrune.Add(droneId); if (deliveryInfo.returning) { ++failedReturns; } else { ++failedDeliveries; penalties += SimulationSettings.FailedDeliveryPenalty; } } } } foreach (EntityId droneId in toPrune) { Improbable.Worker.IComponentData <Position> positionData = SpatialOS.GetLocalEntityComponent <Position>(droneId); if (positionData != null) { Coordinates coords = positionData.Get().Value.coords; coords.y = 0; DroneRetrieval(coords.ToUnityVector()); } DestroyDrone(droneId); } MetricsWriter.Send(new ControllerMetrics.Update() .SetFailedReturns(failedReturns) .SetFailedDeliveries(failedDeliveries) .SetPenalties(penalties) .SetCosts(costs)); UpdateDroneSlotsAndMap(); }
public void AttackPlayer(EntityId playerEntityId) { EntityId playerId = gameObject.EntityId(); EntityId killerId = SpatialOS.GetLocalEntityComponent <PlayerCreation>(new EntityId(1)).Get().Value.killerId; // long playerEntityIdCopy = playerEntityId.Id; SpatialOS.Commands.SendCommand(HealthWriter, Health.Commands.TakeDamage.Descriptor, new DamageRequest(1000), playerEntityId) .OnSuccess(response => { if (playerId != killerId && playerEntityId != killerId) { HealthWriter.Send(new Health.Update().SetCurrentHealth(-10)); } }) .OnFailure(OnDamageRequestFailure); }
private void Start() { SpatialOS.ApplyConfiguration(Configuration); Application.targetFrameRate = SimulationSettings.TargetFramerate; Time.fixedDeltaTime = 1.0f / SimulationSettings.FixedFramerate; switch (SpatialOS.Configuration.EnginePlatform) { case EnginePlatform.FSim: SpatialOS.OnDisconnected += reason => Application.Quit(); break; case EnginePlatform.Client: SpatialOS.OnConnected += ClientPlayerSpawner.SpawnPlayer; break; } SpatialOS.Connect(gameObject); }
public void Start() { SpatialOS.ApplyConfiguration(Configuration); Time.fixedDeltaTime = 1.0f / SimulationSettings.FixedFramerate; switch (SpatialOS.Configuration.WorkerPlatform) { case WorkerPlatform.UnityWorker: Application.targetFrameRate = SimulationSettings.TargetServerFramerate; SpatialOS.OnDisconnected += reason => Application.Quit(); SpatialOS.Connect(gameObject); break; case WorkerPlatform.UnityClient: Application.targetFrameRate = SimulationSettings.TargetClientFramerate; SpatialOS.OnConnected += CreatePlayer; break; } }
// Called when the Play button is pressed in Unity. // public void Start() // { // SpatialOS.ApplyConfiguration(Configuration); // // Time.fixedDeltaTime = 1.0f / SimulationSettings.FixedFramerate; // // // Distinguishes between when the Unity is running as a client or a server. // switch (SpatialOS.Configuration.WorkerPlatform) // { // case WorkerPlatform.UnityWorker: // Application.targetFrameRate = SimulationSettings.TargetServerFramerate; // SpatialOS.OnDisconnected += reason => Application.Quit(); // break; // case WorkerPlatform.UnityClient: // Application.targetFrameRate = SimulationSettings.TargetClientFramerate; // SpatialOS.OnConnected += CreatePlayer; // break; // } // // // Enable communication with the SpatialOS layer of the simulation. //// SpatialOS.Connect(gameObject); // } public void Start() { SpatialOS.ApplyConfiguration(Configuration); // Time.fixedDeltaTime = 1.0f / SimulationSettings.FixedFramerate; switch (SpatialOS.Configuration.WorkerPlatform) { case WorkerPlatform.UnityWorker: Application.targetFrameRate = SimulationSettings.TargetServerFramerate; SpatialOS.OnDisconnected += reason => Application.Quit(); SpatialOS.Connect(gameObject); break; case WorkerPlatform.UnityClient: Application.targetFrameRate = SimulationSettings.TargetClientFramerate; SpatialOS.OnConnected += CreatePlayer; SpatialOS.OnDisconnected += reason => HandlePlayerDisconnect(); SceneManager.LoadSceneAsync(BuildSettings.SplashScreenScene, LoadSceneMode.Additive); break; } }
private void Start() { SpatialOS.ApplyConfiguration(Configuration); Time.fixedDeltaTime = 1.0f / SimulationSettings.FixedFramerate; // Distinguishes between when the Unity is running as a client or a server. switch (SpatialOS.Configuration.WorkerPlatform) { case WorkerPlatform.UnityWorker: Application.targetFrameRate = SimulationSettings.TargetServerFramerate; SpatialOS.OnDisconnected += reason => Application.Quit(); break; case WorkerPlatform.UnityClient: Application.targetFrameRate = SimulationSettings.TargetClientFramerate; SpatialOS.OnConnected += OnSpatialOsConnection; break; } SpatialOS.Connect(gameObject); }
public void Start() { SpatialOS.ApplyConfiguration(Configuration); switch (SpatialOS.Configuration.EnginePlatform) { case EnginePlatform.FSim: SpatialOS.OnDisconnected += reason => Application.Quit(); var targetFramerate = 120; var fixedFramerate = 20; Application.targetFrameRate = targetFramerate; Time.fixedDeltaTime = 1.0f / fixedFramerate; break; case EnginePlatform.Client: SpatialOS.OnConnected += OnConnected; break; } SpatialOS.Connect(gameObject); }
private void OnEnable() { SpatialOS.ApplyConfiguration(Configuration); Application.targetFrameRate = _targetFramerate; switch (SpatialOS.Configuration.EnginePlatform) { case EnginePlatform.FSim: { Time.fixedDeltaTime = 1.0f / _fixedFramerate; SpatialOS.OnDisconnected += reason => Application.Quit(); break; } case EnginePlatform.Client: { SpatialOS.OnConnected += OnConnected; break; } } SpatialOS.Connect(this.gameObject); }
// Called when the Play button is pressed in Unity. public void Start() { SceneManager.LoadScene(BuildSettings.SplashScreenScene, LoadSceneMode.Additive); SpatialOS.ApplyConfiguration(Configuration); Time.fixedDeltaTime = 1.0f / SimulationSettings.FixedFramerate; // Distinguishes between when the Unity is running as a client or a server. switch (SpatialOS.Configuration.WorkerPlatform) { case WorkerPlatform.UnityWorker: Application.targetFrameRate = SimulationSettings.TargetServerFramerate; SpatialOS.OnDisconnected += reason => Application.Quit(); SpatialOS.Connect(gameObject); break; case WorkerPlatform.UnityClient: Application.targetFrameRate = SimulationSettings.TargetClientFramerate; SpatialOS.OnConnected += CreatePlayer; break; } }
private bool SetOnPlatform(EntityId entityId) { var metaComponent = SpatialOS.GetLocalEntityComponent <Metadata>(entityId); if (metaComponent == null) { Debug.Log("Local entities not available, no metadata component..."); return(false); } else { Debug.Log("Got platform metadata component!"); string platformType = metaComponent.Get().Value.entityType; if (platformType == SimulationSettings.IslandTagName) { _currentPlatform = new OnIsland { IslandId = entityId, }; } else if (platformType == SimulationSettings.ShipTagName) { _currentPlatform = new OnShip { ShipId = entityId, IsPilot = false, }; } else { throw new Exception("Invalid component state, platform neither island nor ship"); } return(true); } }
public void AttemptToConnectSpectatorClient() { playerCreationType = PlayerType.SPECTATORPLAYER; SpatialOS.Connect(gameObject); }
public void AttemptToConnectVrClient() { playerCreationType = PlayerType.VRPLAYER; SpatialOS.Connect(gameObject); }
// Called when pressing Connect from the splash screen. public void ConnectToClient() { Debug.LogWarning("Connect to client"); SpatialOS.Connect(gameObject); }
public void ConnectToClient() { SpatialOS.Connect(gameObject); }
private void ApplySwarmMechanics() { int groupSize = 0; float groupSpeed = 0.0f; //Goal's current position (from SwarmGoal entity) Vector3 goalPos = Vector3.zero; //Vectors that need to be calculated //Vector that points towards the center of the flock Vector3 vCenter = Vector3.zero; //Vector that avoids other fish Vector3 vAvoid = Vector3.zero; //Setup query to find all other boids within a radius var query = Query.And( Query.HasComponent <FishParameters>(), Query.InSphere(transform.position.x, transform.position.y, transform.position.z, neighborDistance) ).ReturnOnlyEntityIds(); SpatialOS.Commands.SendQuery(WorldTransformWriter, query, result => { if (result.StatusCode != StatusCode.Success) { Debug.LogError("Query for nearby fish failed with error: " + result.ErrorMessage); return; } //Debug.Log("Found " + result.Response.Count + " nearby entities"); if (result.Response.Count < 1) { return; //No fish in range } Map <EntityId, Entity> resultMap = result.Response.Value.Entities; foreach (var item in resultMap) { EntityId idRef = item.Key; /*if (idRef.Id == numFish) //i.e. == goal * continue; */ //GameObject otherFish = SpatialOS.Universe.Get(idRef).UnderlyingGameObject; // this works also Vector3 otherFishPos = SpatialOS.GetLocalEntityComponent <WorldTransform>(idRef).Get().Value.position.ToVector3(); float otherSpeed = SpatialOS.GetLocalEntityComponent <WorldTransform>(idRef).Get().Value.speed; vCenter += otherFishPos; float otherDistance = Vector3.Distance(this.transform.position, otherFishPos); if (otherDistance <= collisionDistance) { vAvoid -= this.transform.position - otherFishPos; } groupSpeed += otherSpeed; groupSize++; } if (groupSize > 0) { //EntityId id = new EntityId (1003); if (goalObj == null) { Debug.LogError("Goal OBJ missing!"); return; } goalPos = goalObj.transform.position; vCenter = (vCenter / groupSize) + (goalPos - this.transform.position); speed = groupSpeed / groupSize; Debug.Log("Fish #" + gameObject.EntityId().Id + " : Goal Pos : " + goalPos + " Center " + vCenter + " GroupSize: " + groupSize + " Speed: " + speed); //Clamp max speed, in case it spirals out of control speed = Mathf.Clamp(speed, 0.0f, maxSpeed); //Set it's orientation //Relative Position (or direction) = Target position (i.e. vCenter - vAvoid) minus current position //example : https://docs.unity3d.com/ScriptReference/Quaternion.LookRotation.html //Vector3 direction = (vCenter + vAvoid) - this.transform.position; Vector3 direction = (vCenter - vAvoid) - this.transform.position; //Slowly turn in that direction transform.rotation = Quaternion.Slerp(this.transform.rotation, Quaternion.LookRotation(direction), angularSpeed * Time.deltaTime); } }); }