Пример #1
0
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



    void OnTriggerEnter(Collider collider)
    {
        //--------------

        if (Class_ChunkCube.DamageType(collider, 3, brokenStage0, outPool) == true)
        {
            currentDamage = Class_ChunkCube.CurrentDamage(collider, true, true, false);
            StartCoroutine(SplitСube());
        }

        if (Class_ChunkCube.DamageType(collider, 4, brokenStage0, outPool) == true)
        {
            currentDamage = Class_ChunkCube.CurrentDamage(collider, true, true, true);
            StartCoroutine(SplitСube());
        }

        if (Class_ChunkCube.DamageType(collider, 5, brokenStage0, outPool) == true)
        {
            faultSizeOptimize = 1.025f;
        }
        if (Class_ChunkCube.DamageType(collider, 6, brokenStage0, outPool) == true)
        {
            faultSizeOptimize = 1.05f;
        }

        //--------------
    }
Пример #2
0
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



    void OnCollisionEnter(Collision collision)
    {
        //--------------

        if (Class_ChunkCube.DamageType(collision.collider, 1, brokenStage0, outPool) == true)
        {
            currentDamage = Class_ChunkCube.CurrentDamage(collision.collider, false, false, false);
            StartCoroutine(SplitСube());
        }

        if (Class_ChunkCube.DamageType(collision.collider, 2, brokenStage0, outPool) == true)
        {
            currentDamage = Class_ChunkCube.CurrentDamage(collision.collider, false, true, false);
            StartCoroutine(SplitСube());
        }

        //--------------
    }
Пример #3
0
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



    IEnumerator SplitСube()
    {
        //--------------

        amountDamage += currentDamage;

        if (amountDamage >= 10.0f + (faultSize * 0.5f) && brokenStage0 == false)
        {
            brokenStage0 = true;
            StartCoroutine(Class_ChunkCube.CheckChildCount(thisTransform, gameObject));
            if (thisScaleX > faultSize * faultSizeOptimize)
            {
                Class_ChunkCube.CubeOutOfPool(thisTransform, numberCubeOutOfPool, cubeOutOfPoolScale, uvOffset);
                thisRenderer.enabled    = false;
                thisBoxCollider.enabled = false;
            }
            else
            {
                outPool = false;

                if (visible == true)
                {
                    Class_ChunkCube.ParticlesOutOfPool(thisTransform, ExplosionParticlesPool.GiveExplosionParticle(0), Random.Range(0.75f, 1.25f));
                    Class_ChunkCube.ParticlesOutOfPool(thisTransform, ExplosionParticlesPool.GiveExplosionParticle(1), Random.Range(0.75f, 1.25f));
                    for (int i = 0; i < numberDebris; i++)
                    {
                        Class_ChunkCube.DebrisOutOfPool(thisTransform, thisRenderer, DebrisesPool.GiveDebris(Random.Range(0, 2)), numberDebris, Random.Range(0.4f, 0.9f), uvOffset);
                    }
                }

                Class_Mineral.RandomMinerals(thisTransform);
                yield return(delay0);

                ChunkCubesPool.TakeCube(gameObject);
            }
        }

        //--------------
    }
Пример #4
0
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



    void Particles()
    {
        //--------------

        amountDamage += currentDamage;

        if (amountDamage >= 2 && brokenStage0 == false)
        {
            brokenStage0 = true;

            if (visible == true)
            {
                Class_ChunkCube.ParticlesOutOfPool(thisTransform, ExplosionParticlesPool.GiveExplosionParticle(2), Random.Range(0.75f, 1.25f));
                Class_ChunkCube.ParticlesOutOfPool(thisTransform, ExplosionParticlesPool.GiveExplosionParticle(3), Random.Range(0.75f, 1.25f));
            }

            Class_Mineral.RandomMinerals(thisTransform);
            DebrisesPool.TakeDebris(gameObject);
        }

        //--------------
    }
Пример #5
0
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



    IEnumerator Optimization()
    {
        //--------------

        while (brokenStage0 == false)
        {
            yield return(delay0);

            int planetChildCount = planetCubeTransform.childCount;

            if (brokenStage1 == false && planetChildCount > 0)
            {
                brokenStage1 = true;
            }

            if (brokenStage1 == true)
            {
                if (planetChildCount < 6 && brokenStage2 == false)
                {
                    brokenStage2 = true;
                    rotationLod  = false;
                    Class_ChunkCube.ParticlesOutOfPool(thisTransform, ExplosionParticlesPool.GiveExplosionParticle(1), planetCubeTransform.localScale.x * Random.Range(0.75f, 1.25f));
                    while (gravity.transform.childCount != 0)
                    {
                        yield return(null);

                        foreach (Transform child in gravity.transform)
                        {
                            child.transform.parent = null;
                        }
                    }
                    Class_ChunkCube.ParticlesOutOfPool(thisTransform, ExplosionParticlesPool.GiveExplosionParticle(1), planetCubeTransform.localScale.x * Random.Range(0.75f, 1.25f));
                    yield return(null);

                    gravity.SetActive(false);
                    atmosphere.SetActive(false);
                    forest.SetActive(false);
                }

                if (planetChildCount == 0)
                {
                    brokenStage0 = true;
                }
            }

            if (brokenStage2 == false)
            {
                if (Class_Controller.SqrMagnitudeToPlayer(thisTransform) < sqrtDistanceLod)
                {
                    rotationLod = false;
                }
                else
                {
                    rotationLod = true;
                }
            }
        }

        //--------------

        planetDestroyed = true;
        Class_PlanetarySystem.listPlanets.Remove(gameObject);
        planetCube.SetActive(false);
        collidersToOptimizeDestruction.SetActive(false);

        //--------------
    }
Пример #6
0
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



    IEnumerator Optimization()
    {
        //--------------

        while (brokenStage0 == false)
        {
            yield return(delay0);

            int moonChildCount = moonCubeTransform.childCount;

            if (brokenStage1 == false && moonChildCount > 0)
            {
                brokenStage1 = true;
            }

            if (brokenStage1 == true)
            {
                if (moonChildCount < 6 && brokenStage2 == false)
                {
                    brokenStage2 = true;
                    rotationLod  = false;
                    Class_ChunkCube.ParticlesOutOfPool(thisTransform, ExplosionParticlesPool.GiveExplosionParticle(1), moonCubeTransform.localScale.x * Random.Range(0.75f, 1.25f));
                    while (gravity.transform.childCount != 0)
                    {
                        yield return(null);

                        foreach (Transform child in gravity.transform)
                        {
                            child.transform.parent = null;
                        }
                    }
                    Class_ChunkCube.ParticlesOutOfPool(thisTransform, ExplosionParticlesPool.GiveExplosionParticle(1), moonCubeTransform.localScale.x * Random.Range(0.75f, 1.25f));
                    yield return(null);

                    gravity.SetActive(false);
                    atmosphere.SetActive(false);
                }

                if (moonChildCount == 0)
                {
                    brokenStage0 = true;
                }
            }

            if (brokenStage2 == false)
            {
                if (Class_Controller.SqrMagnitudeToPlayer(thisTransform) < sqrtDistanceLod)
                {
                    rotationLod = false;
                }
                else
                {
                    rotationLod = true;
                }
            }
        }

        //--------------

        moonCube.SetActive(false);

        //--------------
    }