protected override void onPartFixedUpdate() { core.onPartFixedUpdate(); base.onPartFixedUpdate(); if (transform.Find("model/base/Door01") == null) { return; } doorStress += core.stress * TimeWarp.fixedDeltaTime; doorStress -= doorStress * ((doorStat == DoorStat.OPEN) ? doorStressReliefOpen : doorStressReliefClosed) * TimeWarp.fixedDeltaTime; if (doorStress < doorStressMin) { brain.particleEmitter.emit = false; lightUp = false; brain.light.intensity = 0; } else { if (doorStat == DoorStat.OPEN) { brain.particleEmitter.maxEmission = (doorStress - doorStressMin) * 1000.0F; brain.particleEmitter.minEmission = brain.particleEmitter.maxEmission / 2.0F; brain.particleEmitter.emit = true; } if (lightUp) { brain.light.intensity -= TimeWarp.fixedDeltaTime * Mathf.Sqrt(doorStress); if (brain.light.intensity <= 0) { lightUp = false; } } else { brain.light.intensity += TimeWarp.fixedDeltaTime * Mathf.Sqrt(doorStress); if (brain.light.intensity >= 1.0F) { lightUp = true; } } } if ((doorStat == DoorStat.CLOSED) && (doorStress >= doorStressMax)) { doorStat = DoorStat.OPENING; doorProgr = 0; } if ((doorStat == DoorStat.OPEN) && (doorStress <= doorStressMin)) { doorStat = DoorStat.CLOSING; doorProgr = 0; } if ((doorStat == DoorStat.OPENING) || (doorStat == DoorStat.CLOSING)) { float oldProgr = doorProgr; doorProgr = Mathf.Clamp(doorProgr + doorSpeed * TimeWarp.fixedDeltaTime, 0, 1.0F); if (transform.Find("model/base/Door03") == null) { transform.Find("model/base/Door01").RotateAroundLocal(new Vector3(0.590526F, 0.807018F, 0.0F), 2.5F * (doorProgr - oldProgr) * ((doorStat == DoorStat.OPENING) ? 1.0F : -1.0F)); transform.Find("model/base/Door02").RotateAroundLocal(new Vector3(0.566785F, -0.823866F, 0.0F), 2.5F * (doorProgr - oldProgr) * ((doorStat == DoorStat.OPENING) ? 1.0F : -1.0F)); } else { transform.Find("model/base/Door01").RotateAroundLocal(Vector3.left, 2.5F * (doorProgr - oldProgr) * ((doorStat == DoorStat.OPENING) ? 1.0F : -1.0F)); transform.Find("model/base/Door02").RotateAroundLocal(Vector3.back, 2.5F * (doorProgr - oldProgr) * ((doorStat == DoorStat.OPENING) ? 1.0F : -1.0F)); transform.Find("model/base/Door03").RotateAroundLocal(Vector3.right, 2.5F * (doorProgr - oldProgr) * ((doorStat == DoorStat.OPENING) ? 1.0F : -1.0F)); transform.Find("model/base/Door04").RotateAroundLocal(Vector3.forward, 2.5F * (doorProgr - oldProgr) * ((doorStat == DoorStat.OPENING) ? 1.0F : -1.0F)); } if (doorProgr >= 1.0F) { doorStat = (doorStat == DoorStat.OPENING) ? DoorStat.OPEN : DoorStat.CLOSED; } } }