internal virtual void GoBoom() { if (spriteRend.isVisible) { Camera2DFollow.followControl.Shake(0.2f, 0.2f); } // Instantiate a clone of the source so that multiple explosions can play at the same time. spriteRend.enabled = false; try { registerTile.Unregister(); PushPull oA = gameObject.GetComponent <PushPull>(); if (oA != null) { if (oA.pusher == PlayerManager.LocalPlayer) { PlayerManager.LocalPlayerScript.playerMove.IsPushing = false; } oA.isPushable = false; } } catch { Logger.LogWarning("Object may of already been removed", Category.Health); } foreach (Collider2D collider2d in gameObject.GetComponents <Collider2D>()) { collider2d.enabled = false; } string name = explosions[Random.Range(0, explosions.Length)]; AudioSource source = SoundManager.Instance[name]; if (source != null) { Instantiate(source, transform.position, Quaternion.identity).Play(); } GameObject fireRing = Resources.Load <GameObject>("effects/FireRing"); Instantiate(fireRing, transform.position, Quaternion.identity); GameObject lightFx = Resources.Load <GameObject>("lighting/BoomLight"); lightFxInstance = Instantiate(lightFx, transform.position, Quaternion.identity); lightSprite = lightFxInstance.GetComponentInChildren <LightSprite>(); //lightSprite.fadeFX(1f); // TODO Removed animation (Should be in a separate component) SetFire(); }
private void UpdateState(bool _aliveState) { visibleState = _aliveState; OnVisibilityChange(_aliveState); MonoBehaviour[] scripts = GetComponentsInChildren <MonoBehaviour>(true); Collider2D[] colliders = GetComponentsInChildren <Collider2D>(); Renderer[] getRenderers = GetComponentsInChildren <Renderer>(true); MeshRenderer[] meshRend = GetComponentsInChildren <MeshRenderer>(true); //Ignore all MeshRenderers Renderer[] renderers = getRenderers.Except(meshRend).ToArray(); for (int i = 0; i < scripts.Length; i++) { if (CanBeDisabled(scripts[i])) { scripts[i].enabled = _aliveState; } } for (int i = 0; i < colliders.Length; i++) { colliders[i].enabled = _aliveState; } for (int i = 0; i < renderers.Length; i++) { SpriteRenderer sr = renderers[i] as SpriteRenderer; // Cast and check cast. // This is necessary because some renderers fail the cast. if (sr != null && !CanBeDisabled(sr)) { } else { renderers[i].enabled = _aliveState; } } if (registerTile != null) { if (_aliveState) { registerTile.UpdatePosition(); } else { registerTile.Unregister(); } } }
private void UpdateState(bool _aliveState) { OnVisibilityChange(_aliveState); MonoBehaviour[] scripts = GetComponentsInChildren <MonoBehaviour>(true); Collider2D[] colliders = GetComponentsInChildren <Collider2D>(); Renderer[] renderers = GetComponentsInChildren <Renderer>(true); for (int i = 0; i < scripts.Length; i++) { if (scripts[i].GetType().Name != networkId && scripts[i].GetType().Name != networkT && scripts[i].GetType().Name != objectBehaviour && scripts[i].GetType().Name != regTile && scripts[i].GetType().Name != inputController && scripts[i].GetType().Name != playerSync) { scripts[i].enabled = _aliveState; } } for (int i = 0; i < colliders.Length; i++) { colliders[i].enabled = _aliveState; } for (int i = 0; i < renderers.Length; i++) { renderers[i].enabled = _aliveState; } if (registerTile != null) { if (_aliveState) { EditModeControl eC = gameObject.GetComponent <EditModeControl>(); if (eC != null) { eC.Snap(); } registerTile.UpdatePosition(); } else { registerTile.Unregister(); } } }
private void updateActiveStatus() { if (transformState.Active) { RegisterObjects(); } else { registerTile.Unregister(); } //todo: Consider moving VisibleBehaviour functionality to CNT. Currently VB doesn't allow predictive object hiding, for example. Renderer[] renderers = GetComponentsInChildren <Renderer>(true); for (int i = 0; i < renderers.Length; i++) { renderers[i].enabled = transformState.Active; } }
private void UpdateState(bool _aliveState) { visibleState = _aliveState; OnVisibilityChange(_aliveState); MonoBehaviour[] scripts = GetComponentsInChildren <MonoBehaviour>(true); Collider2D[] colliders = GetComponentsInChildren <Collider2D>(); Renderer[] renderers = GetComponentsInChildren <Renderer>(true); for (int i = 0; i < scripts.Length; i++) { if (canBeDisabled(scripts[i])) { scripts[i].enabled = _aliveState; } } for (int i = 0; i < colliders.Length; i++) { colliders[i].enabled = _aliveState; } for (int i = 0; i < renderers.Length; i++) { renderers[i].enabled = _aliveState; } if (registerTile != null) { if (_aliveState) { registerTile.UpdatePosition(); } else { registerTile.Unregister(); } } }