private void RegenHealth(int i, HealthComponent.Component healthComponent, HealthRegenComponent.Component regenComponent, HealthRegenData regenData) { if (healthComponent.Health >= healthComponent.MaxHealth) { return; } regenData.NextRegenTimer -= Time.deltaTime; if (regenData.NextRegenTimer <= 0) { regenData.NextRegenTimer += regenComponent.RegenInterval; // Send command to regen entity. var commandSender = toRegen.ModifyHealthCommandSenders[i]; var modifyHealthRequest = new HealthComponent.ModifyHealth.Request( toRegen.EntityId[i].EntityId, new HealthModifier() { Amount = regenComponent.RegenAmount }); commandSender.RequestsToSend.Add(modifyHealthRequest); } toRegen.RegenData[i] = regenData; }
private void UpdateDamagedRecentlyTimers( int i, HealthRegenComponent.Component regenComponent, HealthRegenData regenData) { regenData.DamagedRecentlyTimer -= Time.deltaTime; if (regenData.DamagedRecentlyTimer <= 0) { regenData.DamagedRecentlyTimer = 0; regenComponent.DamagedRecently = false; regenComponent.RegenCooldownTimer = 0; toRegen.HealthRegenComponents[i] = regenComponent; } else { // Send a spatial update once every CooldownSyncInterval. regenData.NextSpatialSyncTimer -= Time.deltaTime; if (regenData.NextSpatialSyncTimer <= 0) { regenData.NextSpatialSyncTimer += regenComponent.CooldownSyncInterval; regenComponent.RegenCooldownTimer = regenData.DamagedRecentlyTimer; toRegen.HealthRegenComponents[i] = regenComponent; } } toRegen.RegenData[i] = regenData; }
private void ResetTimers(HealthRegenComponent.Component regenComponent, HealthRegenData regenData) { regenComponent.RegenCooldownTimer = 0; regenData.DamagedRecentlyTimer = 0; regenData.NextSpatialSyncTimer = regenComponent.CooldownSyncInterval; }