Ejemplo n.º 1
0
    protected override void onPartFixedUpdate()
    {
        core.onPartFixedUpdate();
        base.onPartFixedUpdate();

        if (eye == null)
        {
            eye = transform.Find("model/base/eye");
            if (eye == null)
            {
                return;
            }
        }
        if (cam == null)
        {
            cam = (FlightCamera)GameObject.FindObjectOfType(typeof(FlightCamera));
        }

        if (core.attitudeActive)
        {
            eye.rotation = Quaternion.RotateTowards(eye.rotation, core.attitudeGetReferenceRotation(core.attitudeReference) * core.attitudeTarget * Quaternion.Euler(90, 0, 0), 360 * TimeWarp.fixedDeltaTime);
        }
        else
        {
            if (brainStress < brainStressMin)
            {
                eye.rotation = Quaternion.RotateTowards(eye.rotation, Quaternion.LookRotation((cam.transform.position - eye.position).normalized, cam.transform.up) * Quaternion.Euler(90, 0, 0), 360 * TimeWarp.fixedDeltaTime);
            }
            else
            {
                eye.localRotation = Quaternion.RotateTowards(eye.localRotation, Quaternion.identity, 360 * TimeWarp.fixedDeltaTime);
            }
        }

        brainStress += core.stress * TimeWarp.fixedDeltaTime;
        brainStress -= brainStress * ((shellStat != ShellStat.CLOSED) ? brainStressReliefOpen : brainStressReliefClosed) * TimeWarp.fixedDeltaTime;

        if (brainStress < brainStressMin)
        {
            brain.particleEmitter.emit = false;
            lightUp = false;
            brain.light.intensity = 0;
        }
        else
        {
            if (shellStat != ShellStat.CLOSED)
            {
                brain.particleEmitter.maxEmission = (brainStress - brainStressMin) * 1000.0F;
                brain.particleEmitter.minEmission = brain.particleEmitter.maxEmission / 2.0F;
                brain.particleEmitter.emit        = true;
            }

            if (lightUp)
            {
                brain.light.intensity -= TimeWarp.fixedDeltaTime * Mathf.Sqrt(brainStress);
                if (brain.light.intensity <= 0)
                {
                    lightUp = false;
                }
            }
            else
            {
                brain.light.intensity += TimeWarp.fixedDeltaTime * Mathf.Sqrt(brainStress);
                if (brain.light.intensity >= 1.0F)
                {
                    lightUp = true;
                }
            }
        }

        if ((shellStat == ShellStat.CLOSED) && (brainStress >= brainStressMax))
        {
            shellStat  = ShellStat.EJECTING;
            shellDecay = 0;
        }

        if (shellStat == ShellStat.EJECTING)
        {
            shellDecay += TimeWarp.fixedDeltaTime;

            transform.Find("model/base/shell01").position += (transform.Find("model/base/shell01").position - transform.Find("model/base").position).normalized * 50 * TimeWarp.fixedDeltaTime;
            transform.Find("model/base/shell02").position += (transform.Find("model/base/shell02").position - transform.Find("model/base").position).normalized * 50 * TimeWarp.fixedDeltaTime;
            transform.Find("model/base/shell03").position += (transform.Find("model/base/shell03").position - transform.Find("model/base").position).normalized * 50 * TimeWarp.fixedDeltaTime;

            if (shellDecay >= 5)
            {
                GameObject.Destroy(transform.Find("model/base/shell01").gameObject);
                GameObject.Destroy(transform.Find("model/base/shell02").gameObject);
                GameObject.Destroy(transform.Find("model/base/shell03").gameObject);
                shellStat = ShellStat.EJECTED;
            }
        }
    }
Ejemplo n.º 2
0
    protected override void onPartFixedUpdate()
    {
        core.onPartFixedUpdate();
        base.onPartFixedUpdate();

        if (eye == null)
        {
            eye = transform.Find("model/base/eye");
            if (eye == null)
            {
                return;
            }
        }
        if (cam == null)
        {
            cam = (FlightCamera)GameObject.FindObjectOfType(typeof(FlightCamera));
        }

        if (core.attitudeActive)
        {
            eye.rotation = Quaternion.RotateTowards(eye.rotation, core.attitudeGetReferenceRotation(core.attitudeReference) * core.attitudeTarget * Quaternion.Euler(90, 0, 0), 360 * TimeWarp.fixedDeltaTime);
        }
        else
        {
            if (brainStress < brainStressMin)
            {
                eye.rotation = Quaternion.RotateTowards(eye.rotation, Quaternion.LookRotation((cam.transform.position - eye.position).normalized, cam.transform.up) * Quaternion.Euler(90, 0, 0), 360 * TimeWarp.fixedDeltaTime);
            }
            else
            {
                eye.localRotation = Quaternion.RotateTowards(eye.localRotation, Quaternion.identity, 360 * TimeWarp.fixedDeltaTime);
            }
        }

        brainStress += core.stress * TimeWarp.fixedDeltaTime;
        brainStress -= brainStress * ((shellStat != ShellStat.CLOSED) ? brainStressReliefOpen : brainStressReliefClosed) * TimeWarp.fixedDeltaTime;

        if (brainStress < brainStressMin)
        {
            brain.particleEmitter.emit = false;
            lightUp = false;
            brain.light.intensity = 0;
        }
        else
        {
            if (shellStat != ShellStat.CLOSED)
            {
                brain.particleEmitter.maxEmission = (brainStress - brainStressMin) * 1000.0F;
                brain.particleEmitter.minEmission = brain.particleEmitter.maxEmission / 2.0F;
                brain.particleEmitter.emit = true;
            }

            if (lightUp)
            {
                brain.light.intensity -= TimeWarp.fixedDeltaTime * Mathf.Sqrt(brainStress);
                if (brain.light.intensity <= 0)
                {
                    lightUp = false;
                }
            }
            else
            {
                brain.light.intensity += TimeWarp.fixedDeltaTime * Mathf.Sqrt(brainStress);
                if (brain.light.intensity >= 1.0F)
                {
                    lightUp = true;
                }
            }
        }

        if ((shellStat == ShellStat.CLOSED) && (brainStress >= brainStressMax))
        {
            shellStat = ShellStat.EJECTING;
            shellDecay = 0;
        }

        if (shellStat == ShellStat.EJECTING)
        {
            shellDecay += TimeWarp.fixedDeltaTime;

            transform.Find("model/base/shell01").position += (transform.Find("model/base/shell01").position - transform.Find("model/base").position).normalized * 50 * TimeWarp.fixedDeltaTime;
            transform.Find("model/base/shell02").position += (transform.Find("model/base/shell02").position - transform.Find("model/base").position).normalized * 50 * TimeWarp.fixedDeltaTime;
            transform.Find("model/base/shell03").position += (transform.Find("model/base/shell03").position - transform.Find("model/base").position).normalized * 50 * TimeWarp.fixedDeltaTime;

            if (shellDecay >= 5)
            {
                GameObject.Destroy(transform.Find("model/base/shell01").gameObject);
                GameObject.Destroy(transform.Find("model/base/shell02").gameObject);
                GameObject.Destroy(transform.Find("model/base/shell03").gameObject);
                shellStat = ShellStat.EJECTED;
            }
        }
    }