Skip to content

APLM Controller

BP_APLMController is the Blueprint that brings APLM to life at runtime. It is the bridge between your project (your sky system, your save game, your in-world calendar) and the two Material Parameter Collections that the material reads every frame: MPC_Seasons and MPC_Weathers.

You drop it in your level once. You assign one data asset per biome. From that point on it handles the rest: pushing seasonal color shifts into the material, exposing weather entry points that you can call when it rains or snows, and managing the transitions in between.

If you have ever wondered how a tropical rainforest can stay green in summer and turn rich after rain while the neighbouring desert keeps its sun-baked look, this is the actor doing the orchestration.

  • Seasons, by writing the per-biome color, brightness, contrast, specular, and roughness values into MPC_Seasons every tick.
  • Weather, by exposing one rain entry point and one snow entry point per layer (each biome and most base layers). Calling these from your weather system pushes the right intensity values into MPC_Weathers.
  • Smooth transitions between consecutive seasons through an internal lerp helper, so a forest does not snap from summer to autumn.
  1. Drag BP_APLMController into your level. One instance per level is enough.
  2. In the Details panel, assign one data asset per biome:
    • BP_TundraData, BP_BorealData, BP_DesertData, BP_MediterraneanData, BP_SavannaData, BP_TemperateForestData, BP_TropicalRainforestData, BP_WetlandData, BP_GrasslandData, BP_Custom1Data, BP_Custom2Data, BP_Custom3Data.
    • Each data asset holds the per-season values (color, color grade, specular, roughness) for that biome.
  3. From your gameplay or sky/weather system, call the per-layer weather entry points when conditions change. For example, when rain starts in the forest region, call TemperateForestWeatherRain. When it stops, call it again with the value you want to ease back to.
  4. The controller’s tick logic does the rest: it picks the current and next season, runs the lerp, and writes the resulting values into MPC_Seasons.

The controller exposes a small set of functions you might call from your own Blueprints. Most users only ever call the per-layer weather ones; the rest run on tick automatically.

For every biome layer (Tundra, BorealForest, Desert, Mediterranean, Savanna, TemperateForest, TropicalRainForest, Wetland, Grassland, Custom1, Custom2, Custom3) and most base layers (Beach, Cliff, Grass, Gravel):

  • [Layer]WeatherRain — set the rain intensity for that layer.
  • [Layer]WeatherSnow — set the snow intensity for that layer.

Cliff has only the rain variant, which matches how cliffs respond in the material.

FunctionWhat it does
AllVariablesCalls every per-biome push function in turn. Runs once per tick.
AllNodesWider master that bundles related setup steps.
PerBiomeSortingKeeps each biome’s per-season list in the right order before reading.
SetSeasonIndexUpdates which season is currently active.
GetCurrentSeasonDataReturns the data for the active season.
GetNextSeasonDataReturns the data for the season we are blending toward.
SeasonLerpInterpolates between current and next season values. The result drives the MPC writes.
SeasonTransitionOwns the transition lifecycle (when to advance, how long to blend).
[Biome]VariablesOne push function per biome (e.g. TundraVariables, BorealForestVariables). Reads the lerp result and writes that biome’s parameters into MPC_Seasons.

You normally do not call these. They run on tick. They are documented here so you know what is happening when you inspect the Blueprint.

VariableTypeWhat it holds
BP_TundraDataBP_SeasonPer-season values for the Tundra biome.
BP_BorealDataBP_SeasonPer-season values for Boreal Forest.
BP_DesertDataBP_SeasonPer-season values for Desert.
BP_MediterraneanDataBP_SeasonPer-season values for Mediterranean.
BP_SavannaDataBP_SeasonPer-season values for Savanna.
BP_TemperateForestDataBP_SeasonPer-season values for Temperate Forest.
BP_TropicalRainforestDataBP_SeasonPer-season values for Tropical Rainforest.
BP_WetlandDataBP_SeasonPer-season values for Wetland.
BP_GrasslandDataBP_SeasonPer-season values for Grassland.
BP_Custom1DataBP_SeasonPer-season values for Custom 1.
BP_Custom2DataBP_SeasonPer-season values for Custom 2.
BP_Custom3DataBP_SeasonPer-season values for Custom 3.

Each BP_Season data asset stores an ordered list of F_SeasonParameters entries, one per season. The order in the asset is the order the controller cycles through them.

StructWhat it holds
F_ColorGradeOffset, gain, brightness, contrast, saturation.
F_SeasonCoreThe eight seasonal values per biome (color, color grade, specular, roughness).
F_SeasonMetadataIdentity and labelling fields for one season entry (display name, index, and so on).
F_SeasonParametersOne full season entry: metadata plus the core values.
F_WeatherParametersThe weather payload (rain and snow intensities) the controller writes into MPC_Weathers.

You can use these structs as is, or extend them in your own Blueprints. Many projects only need the shipped structs.