示例#1
0
    // Update is called once per frame
    void Update()
    {
        timer += Time.deltaTime;

        if (currentHeat > heatSinkCapacity && !overHeated)
        {
            overHeated = true;
            TransferHeatToMainHeatSink();
            OverHeatedEventInfo ohei = new OverHeatedEventInfo(gameObject, "Overheat", true);
            EventCoordinator.ActivateEvent(ohei);
        }
        else if (timer > timeBetweenCheck && !overHeated)
        {
            timer = 0;
            TransferHeatToMainHeatSink();
        }

        if (ammountDrained > 0)
        {
            PassiveDrain();
        }
    }
示例#2
0
    void PassiveDrain()
    {
        float drained = passiveDraining * Time.deltaTime;

        if (overHeated)
        {
            currentHeat    -= drained * flushingMultiplier;
            ammountDrained -= drained * flushingMultiplier;
            if (currentHeat <= 0)
            {
                currentHeat    = 0;
                ammountDrained = 0;
                overHeated     = false;
                OverHeatedEventInfo ohei = new OverHeatedEventInfo(gameObject, "Not Overheat", false);
                EventCoordinator.ActivateEvent(ohei);
            }
        }
        else
        {
            currentHeat    -= drained;
            ammountDrained -= drained;
        }
    }