IEnumerator LoadScene(string sceneName) { Debug.Log($"[Client] <b>Loading level</b> '<i>{sceneName}</i>'"); EventHub <StartedLoading> .Emit(new StartedLoading()); // Cleanup currentReplicaPossess = ReplicaId.Invalid; Client.replicaManager.Reset(); if (sceneHandle.IsValid()) { yield return(Addressables.UnloadSceneAsync(sceneHandle)); } // New map #if !UNITY_EDITOR sceneHandle = Addressables.LoadSceneAsync(sceneName, LoadSceneMode.Additive); sceneHandle.Completed += ctx => { SendLoadSceneDone(); EventHub <EndedLoading> .Emit(new EndedLoading()); }; #else SendLoadSceneDone(); EventHub <EndedLoading> .Emit(new EndedLoading()); #endif }
public override void DeserializeDestruction(BitStream bs) { DamageInfo?reason = null; var hasDeathReason = bs.ReadBool(); if (hasDeathReason) { var newReason = new DamageInfo(); newReason.Deserialize(bs); reason = newReason; } OnDeath?.Invoke(reason); if (isOwner) { EventHub <DeathEvent> .Emit(new DeathEvent()); } }
public override void Deserialize(BitStream bs) { var newHealth = bs.ReadByte(); if (newHealth != Health) { if (newHealth < Health) { OnDamage?.Invoke(null); if (isOwner) { EventHub <HurtEvent> .Emit(new HurtEvent(this)); } } if (newHealth > Health) { EventHub <HealedEvent> .Emit(new HealedEvent(this)); } Health = newHealth; } }
public void DestroyLayer(PedestalLayer layer, bool turnPedestalToStone = false) { layer.hasDestroyed = true; layer.pedestales.RemoveAll(p => !p.Active); foreach (var pedestal in layer.pedestales) { pedestal.Fall(); } // if (turnPedestalToStone) // { // foreach (var pedestal in layer.pedestales) // { // if (pedestal.CanBeTurnedToStone) // pedestal.SetMaterial(_stoneMaterial); // } // } EventHub.Emit(new EventPedestalLayerDestroy(layer)); }