INSODIMENSIONStudios
AtmosReference

Day Cycle Asset

Day-cycle identity, base look, render profile, moon path, timeline slots, and coverage APIs

Day Cycle Asset

UAgenticDayCycle defines a timeline for Agentic Atmos on Unreal Engine 5.8. Its Segments array selects reusable look presets by time. The cycle also owns the base look and renderer registry that travel with that timeline.

A slot answers when and which preset. Author lighting values in the look preset's modifier slots, not in the timeline's retained inline data.


Asset fields

FieldType / meaning
CycleNameAuthor-facing string label. Default Unnamed Day Cycle.
DescriptionFree-form description.
AuthorAuthor credit.
ReferenceImageOptional soft reference to a texture used as a visual reference.
ThumbnailEditor-only Content Browser thumbnail. Without one, the tile can use its presets' thumbnails.
RegionTagsSemantic gameplay tags associated with the cycle.
NotesAuthor notes, not displayed at runtime.
BaseLookUAtmosLookPreset supplying categories a slot does not assert. Null falls through to actor defaults.
RenderProfileUAtmosRenderProfile registry used to resolve the looks' renderer tags. Null mounts no renderer content.
SegmentsOrdered array of FLightingSegment timeline slots.
AssetVersionRead-only asset-version metadata.
CreationTime, LastModifiedRead-only creation and modification metadata.

RenderProfile is the one registry the sky actor mounts. A null registry is not a request to inherit an actor or project-settings sky profile: there is no such fallback chain. Physical lighting can still exist without cloud or celestial-image content.

Moon-path fields

FieldMeaning
bOverrideMoonPathEnable a cycle-wide moon-path selection. False follows the calendar's world default.
MoonPathEAtmosMoonPath choice used while the override is enabled; default OppositeSun.
MoonPathOffsetHoursOffset for RealSkyOffset, clamped to -24 through 24 hours. Positive values make the moon rise earlier.

The path is selected for the whole cycle so it does not jump when a lighting segment changes. It does not change lunar phase. An artistic phase pin belongs to the preset's moon modifier.


Timeline slot fields

FLightingSegment is also the runtime composed-state payload, but only these identity, look, and time fields are the timeline authoring surface:

FieldMeaning
SegmentNameAuthor-facing segment name.
DescriptionMood or intent of this slot.
LookPresetPreset supplying the slot's look. Null preserves the cycle base look and actor fallbacks.
TimeRange.MinStart in HHMM clock units, within 0–2400.
TimeRange.MaxEnd in the same HHMM units.
TransitionMinutesOutgoing crossfade duration in ordinary minutes, ending at TimeRange.Max. 0 is a hard cut; maximum 1440.
TransitionCurveOptional float curve for outgoing easing. Null means linear.
bEnableLerpEnable interpolation inside the slot's time range. Default true.

The time window and transition duration use different encodings. 1730 means 17:30 in TimeRange; 60 in TransitionMinutes means one hour of the authored day, not HHMM subtraction and not an hour of wall-clock waiting. The running clock's day length controls playback speed.

A slot from 1200 to 1800 with TransitionMinutes = 60 begins blending out at 17:00 and finishes at 18:00. New struct defaults have an empty 0–0 range and no transition; set a valid window before using one.

The serialized MinTime, MaxTime, and TransitionTime members are retired compatibility fields. Use TimeRange and TransitionMinutes for new asset authoring. Tool arguments may retain older names, so read their live schemas rather than treating an argument name as the asset field name.

Coverage and ordering

Author adjacent windows covering 0 through 2400, with each end greater than its start. Sorting does not repair gaps or overlaps. A cycle that starts at midnight and ends at midnight can still have an unresolved hole between two slots.

APIWhat it returns or changes
GetConfigForTimeFind the slot containing the requested HHMM time. Returns false when none matches.
GetConfigsForInterpolationReturn current and next slots plus normalized transition alpha.
ValidateConfigurationsReport invalid ranges, overlaps, and other configuration errors.
SortConfigurationsByTimeStable-sort the slots by their start time.
GetTimeSpanEarliest start and latest end; this alone is not a coverage check.
FindCoverageGapsUncovered spans in 0–2400, returned in ascending order. Treats slots as a union and sorts internally.
CoversFullDayCycleTrue when the union has no reported coverage gaps.
GetConfigurationCountNumber of slots.

The coverage implementation tolerates a start at or before 50 and an end at or after 2350. For predictable authoring, still use exact 0 and 2400 endpoints. Overlap is not a gap; inspect configuration validation as well as coverage. Segment tools can re-sort the array after edits, so use the returned index rather than assuming a previous index remains valid.

Continue with editor toolsets, sky actor properties, or support.