IEnumerator PlayerDeathSequence() { MomentumManager.ResetMomentum(); float fadeOutCompleteTime = Time.time + playerDeathFadeScreenTimer; while (Time.time < fadeOutCompleteTime) { float timeRemaining = fadeOutCompleteTime - Time.time; float percentageComplete = timeRemaining / playerDeathFadeScreenTimer; Color fadeColor = FadeScreen.color; fadeColor.a = Mathf.Lerp(1f, 0f, percentageComplete); FadeScreen.color = fadeColor; yield return(null); } Color finalFadeColor = FadeScreen.color; finalFadeColor.a = 1f; FadeScreen.color = finalFadeColor; MuteAllEmitters(); GlobalEventEmitter.OnGameStateEvent(GlobalConstants.GameStateEvents.PlayerDied); UnmuteAllEmitters(); playerTransform.position = currentlyActiveLevel.SpawnPoint.position; yield return(new WaitForSeconds(3f)); float fadeBackTimer = playerDeathFadeScreenTimer / 2f; float fadeBackCompleteTime = Time.time + fadeBackTimer; // TODO: move this to dedicated scene-change logic SceneManager.LoadScene(SceneManager.GetActiveScene().name); GlobalEventEmitter.OnGameStateEvent(GlobalConstants.GameStateEvents.NewSceneLoaded); EntityEmitter playerEntityEmitter = Player.GetComponent <EntityEmitter>(); playerEntityEmitter.isMuted = false; playerEntityEmitter.EmitEvent(EntityEvents.Respawning); while (Time.time < fadeBackCompleteTime) { float timeRemaining = fadeBackCompleteTime - Time.time; float percentageComplete = timeRemaining / fadeBackTimer; Color fadeColor = FadeScreen.color; fadeColor.a = Mathf.Lerp(0f, 1f, percentageComplete); FadeScreen.color = fadeColor; yield return(null); } }
IEnumerator AlertGroupMembers() { foreach (Transform entity in entitiesToAggro) { Transform currentTarget = (Transform)entityInformation.GetAttribute(EntityAttributes.CurrentTarget); entity.GetComponent <EntityManagement>().SetAttribute(EntityAttributes.CurrentTarget, currentTarget); EntityEmitter emitter = entity.GetComponent <EntityEmitter>(); emitter.EmitEvent(EntityEvents.Aggro); emitter.EmitEvent(EntityEvents.TargetUpdated); float aggroDelay = Random.Range(minAggroDelay, maxAggroDelay); yield return(new WaitForSeconds(maxAggroDelay)); } // If one dies before all are aggroed, it wigs. Just leaving them immune until all notified. foreach (Transform entity in entitiesToAggro) { entity.GetComponent <StationaryEntityHealthComponent>().IsInvulnerable = false; } }
void Awake() { parryHardware = GetComponentInParent <ParryHardware>(); gear = GetComponentInParent <EntityGearManagement>(); entityEmitter = GetComponentInParent <EntityEmitter>(); }
public static void DeregisterEmitter(EntityEmitter emitter) { ActiveEmittersInScene.Remove(emitter); }
public static void RegisterEmitter(EntityEmitter emitter) { ActiveEmittersInScene.Add(emitter); }
protected virtual void Awake() { entityEmitter = GetComponent <EntityEmitter>(); entityData = GetComponent <EntityData>(); }