Purpose:

This is the calculation engine that automatically determines how fast attributes degenerate (drain over time) based on their current value. It allows you to create dynamic degeneration rates that change as the attribute increases or decreases - like hunger that drains slowly when you're full but faster when you're hungry.

What It Does:

When you configure an attribute to degenerate over time with curve-based scaling, this calculator:

  1. Reads your curve configuration from the AttributeDefinition (which curve table and row to use)
  2. Calculates the normalized attribute value (current value ÷ max value, giving a 0-1 range)
  3. Evaluates your curve at that normalized value to get a dynamic multiplier
  4. Applies the multiplier to your base degeneration rate to get the final drain rate
  5. Returns the modified degeneration amount that gets subtracted from the attribute each tick

How It's Used:

You never interact with this class directly as a designer. The WCGASAttributeDegenerationSubsystem automatically uses this calculator when you configure curve-driven degeneration in your AttributeDefinition assets. The Gameplay Ability System calls it automatically whenever:

Designer-Friendly Example:

If you set up Hunger to degenerate at -1.0 per second with a curve that outputs 0.3 at 50% fullness, this calculator automatically computes: -1.0 × 0.3 = -0.3 per second when the character is half-full. If you design your curve so Y=0.1 when full (10% rate) and Y=1.0 when empty (100% rate), hunger will drain slowly after eating and accelerate as the character gets hungrier - all automatically without any code changes.