Пример #1
0
    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();
    }
Пример #2
0
    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();
            }
        }
    }
Пример #3
0
    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();
            }
        }
    }
Пример #4
0
 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;
     }
 }
Пример #5
0
    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();
            }
        }
    }