Example #1
0
    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;
            }
        }
    }
Example #2
0
    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;
            }
        }
    }