Namespace Serenity.ProceduralExpression.Domain.Entities
Classes
MaterialDelta
Represents a collection of material property changes for procedural animation. Analogous to PoseDelta but for material properties instead of bone transforms.
Combination Semantics: Uses last-write-wins per MaterialId. When combining two MaterialDeltas, entries from the other delta overwrite existing entries with the same MaterialId. This is deterministic given consistent ordering.
Weight Semantics: Weight represents blend strength, not additive contribution. A weight of 0 means "no change" (original color preserved), and 1 means "full delta applied". The applier is responsible for lerping between original and delta colors based on weight.
Why Separate from PoseDelta: Material changes target renderers (visual appearance) while pose changes target transforms (skeletal animation). They have different application semantics, different Unity APIs (MaterialPropertyBlock vs Transform), and may be applied to different objects (a character's body vs. equipment materials).
PoseDelta
Represents a collection of bone offsets for procedural animation. Position offsets are additive (base + offset). Rotation offsets use quaternion multiplication (base * offset). Combination is deterministic and order-stable.
TransformDelta
Represents a collection of transform scale changes for procedural animation. Analogous to MaterialDelta but for transform scale instead of material colors.
Combination Semantics: Uses last-write-wins per TransformId. When combining two TransformDeltas, entries from the other delta overwrite existing entries with the same TransformId. This is deterministic given consistent ordering.
Weight Semantics: Weight represents blend strength, not multiplicative contribution. A weight of 0 means "no change" (identity scale preserved), and 1 means "full delta applied". The applier is responsible for lerping between identity and delta scale based on weight.
Structs
MaterialPropertyData
Data container for a single material property change. Contains the target color and blend weight.
ProceduralContext
Context passed to all procedural animation evaluation logic. Contains state reader for accessing state values and time information.
TransformScaleData
Data container for a single transform scale change. Contains the target scale multiplier and blend weight.