Table of Contents

Namespace RisingV.Shared.Aspects

Namespaces

RisingV.Shared.Aspects.Exceptions
RisingV.Shared.Aspects.Meta

Classes

BaseAspect<T>

Base class for aspects that operate on a specific type of entity. See IAspect for more details on aspects.

Interfaces

IAspect

Aspect (a.k.a. Aspecting) is the pattern this SDK uses to give a domain object or ECS entity one or more typed views without polluting the underlying model with cross-cutting concerns.

An aspect is:
• a zero-allocation façade created on demand over an existing object
• strongly-typed – each concrete aspect advertises the exact type it can wrap
• qualifiable – construction calls Qualifies so the instance only represents objects that meet the aspect’s contract
• side effect free – it never owns the data; it merely exposes convenience helpers, computed state, or thin write-through setters.

Use As<TAspect>() (see BaseAspect.As) to obtain a richer API for a target if that target qualifies. When the strict flag is true, a non-qualifying target throws UnqualifiedTargetException; otherwise the instance logs a warning and remains inert.

Aspects keep the core model clean, promote single-responsibility, and give you fluent, discoverable syntax such as:

var unit = entity.As<UnitAspect>(); // throws if entity is not a unit
unit.AddHealth(-10);

Or in a less strict mode:

var unit = entity.As<UnitAspect>(false); // warns if entity is not a unit, but returns null
unit?.AddHealth(-10);
IAspect<T>

Base contract for a strongly-typed aspect.