Ejemplo n.º 1
0
    public override void UpdateBehaviour(EnergyRegulator energyRegulator, float deltaTime)
    {
        if (energyRegulator.IsDepletedUnrecoverable())
        {
            if (IsLastBranch())
            {
                Kill();
            }
            else
            {
                // Don't kill but stop growing and stop all energy transfert
                // the consequence is that the child branch will die which seems good in this case
            }
        }
        else
        {
            // Branch consume additional energy based on their size
            //energyRegulator.ConsumeEnergy(deltaTime * CurrentSize * 0.2f * CountAllChildren(true)/* _sizeConsumptionFactor*/);

            if (CanCreateNewLeaf(energyRegulator))
            {
                Owner.AddNewLeaf(this, _nextLeafSpawn);
                energyRegulator.ConsumeEnergy(_energyNeededToCreateLeaf);
                _nextLeafSpawn = Random.Range(_leafSpawnPercentMin, _leafSpawnPercentMax);
            }

            // TODO make a component to manage Growable creation
            if (CanCreateNewBud(energyRegulator))
            {
                Owner.AddNewBud(this, _nextBudSpawn);
                energyRegulator.ConsumeEnergy(_energyNeededToCreateBud);
                _nextBudSpawn = Random.Range(_budSpawnPercentMin, _budSpawnPercentMax);
            }
        }
    }
Ejemplo n.º 2
0
    public override void UpdateBehaviour(EnergyRegulator energyRegulator, float deltaTime)
    {
        if (energyRegulator.IsDepletedUnrecoverable())
        {
            Kill();
        }
        else
        {
            // Bud get energy from his parent branch
            EnergyRegulator.TransfertEnergy(Parent.EnergyRegulator, energyRegulator, deltaTime * _energyTransfertPerSecond);

            if (CanCreateNewBranch(energyRegulator))
            {
                Owner.AddNewBranch(Parent, RelativePercentPosition);
                energyRegulator.ConsumeEnergy(_energyNeededToCreateBranch);
                Kill();
            }
        }
    }
Ejemplo n.º 3
0
 public override void UpdateBehaviour(EnergyRegulator energyRegulator, float deltaTime)
 {
     if (energyRegulator.IsDepletedUnrecoverable())
     {
         Kill();
     }
     else if (!ShouldDie())
     {
         // Accumulate energy from the sun
         if (EnvironmentHelper.Instance.IsEnlightened(this))
         {
             AGrowable growable = Parent;
             while (growable != null)
             {
                 // Energy is distributed to all parent equally
                 // TODO gain energy only if all parent are not depletedUnrecoverable
                 float energyGain = (_energyGainPerSecond * deltaTime) / Depth;
                 growable.EnergyRegulator.GainEnergy(energyGain);
                 growable = growable.Parent;
             }
         }
     }
 }