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; } } }