UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FSpeedTreeWind Class Reference

#include <SpeedTreeWind.h>

Classes

struct  SBranchWindLevel
 
struct  SParams
 
struct  SWindGroup
 

Public Types

enum  Constants { NUM_WIND_POINTS_IN_CURVE = 10 , NUM_BRANCH_LEVELS = 2 , NUM_LEAF_GROUPS = 2 }
 
enum  EOptions {
  GLOBAL_WIND , GLOBAL_PRESERVE_SHAPE , BRANCH_SIMPLE_1 , BRANCH_DIRECTIONAL_1 ,
  BRANCH_DIRECTIONAL_FROND_1 , BRANCH_TURBULENCE_1 , BRANCH_WHIP_1 , BRANCH_OSC_COMPLEX_1 ,
  BRANCH_SIMPLE_2 , BRANCH_DIRECTIONAL_2 , BRANCH_DIRECTIONAL_FROND_2 , BRANCH_TURBULENCE_2 ,
  BRANCH_WHIP_2 , BRANCH_OSC_COMPLEX_2 , LEAF_RIPPLE_VERTEX_NORMAL_1 , LEAF_RIPPLE_COMPUTED_1 ,
  LEAF_TUMBLE_1 , LEAF_TWITCH_1 , LEAF_OCCLUSION_1 , LEAF_RIPPLE_VERTEX_NORMAL_2 ,
  LEAF_RIPPLE_COMPUTED_2 , LEAF_TUMBLE_2 , LEAF_TWITCH_2 , LEAF_OCCLUSION_2 ,
  FROND_RIPPLE_ONE_SIDED , FROND_RIPPLE_TWO_SIDED , FROND_RIPPLE_ADJUST_LIGHTING , ROLLING ,
  NUM_WIND_OPTIONS
}
 
enum  EShaderValues {
  SH_WIND_DIR_X , SH_WIND_DIR_Y , SH_WIND_DIR_Z , SH_GENERAL_STRENGTH ,
  SH_GLOBAL_TIME , SH_GLOBAL_DISTANCE , SH_GLOBAL_HEIGHT , SH_GLOBAL_HEIGHT_EXPONENT ,
  SH_BRANCH_1_TIME , SH_BRANCH_1_DISTANCE , SH_BRANCH_2_TIME , SH_BRANCH_2_DISTANCE ,
  SH_BRANCH_1_TWITCH , SH_BRANCH_1_TWITCH_FREQ_SCALE , SH_BRANCH_2_TWITCH , SH_BRANCH_2_TWITCH_FREQ_SCALE ,
  SH_BRANCH_1_WHIP , SH_BRANCH_2_WHIP , SH_WIND_PACK0 , SH_WIND_PACK1 ,
  SH_WIND_ANCHOR_X , SH_WIND_ANCHOR_Y , SH_WIND_ANCHOR_Z , SH_WIND_PACK2 ,
  SH_GLOBAL_DIRECTION_ADHERENCE , SH_BRANCH_1_DIRECTION_ADHERENCE , SH_BRANCH_2_DIRECTION_ADHERENCE , SH_WIND_PACK5 ,
  SH_BRANCH_1_TURBULENCE , SH_BRANCH_2_TURBULENCE , SH_WIND_PACK6 , SH_WIND_PACK7 ,
  SH_LEAF_1_RIPPLE_TIME , SH_LEAF_1_RIPPLE_DISTANCE , SH_LEAF_1_LEEWARD_SCALAR , SH_WIND_PACK8 ,
  SH_LEAF_1_TUMBLE_TIME , SH_LEAF_1_TUMBLE_FLIP , SH_LEAF_1_TUMBLE_TWIST , SH_LEAF_1_TUMBLE_DIRECTION_ADHERENCE ,
  SH_LEAF_1_TWITCH_THROW , SH_LEAF_1_TWITCH_SHARPNESS , SH_LEAF_1_TWITCH_TIME , SH_WIND_PACK9 ,
  SH_LEAF_2_RIPPLE_TIME , SH_LEAF_2_RIPPLE_DISTANCE , SH_LEAF_2_LEEWARD_SCALAR , SH_WIND_PACK10 ,
  SH_LEAF_2_TUMBLE_TIME , SH_LEAF_2_TUMBLE_FLIP , SH_LEAF_2_TUMBLE_TWIST , SH_LEAF_2_TUMBLE_DIRECTION_ADHERENCE ,
  SH_LEAF_2_TWITCH_THROW , SH_LEAF_2_TWITCH_SHARPNESS , SH_LEAF_2_TWITCH_TIME , SH_WIND_PACK11 ,
  SH_FROND_RIPPLE_TIME , SH_FROND_RIPPLE_DISTANCE , SH_FROND_RIPPLE_TILE , SH_FROND_RIPPLE_LIGHTING_SCALAR ,
  SH_ROLLING_BRANCH_FIELD_MIN , SH_ROLLING_BRANCH_LIGHTING_ADJUST , SH_ROLLING_BRANCH_VERTICAL_OFFSET , SH_WIND_PACK12 ,
  SH_ROLLING_LEAF_RIPPLE_MIN , SH_ROLLING_LEAF_TUMBLE_MIN , SH_ROLLING_X , SH_ROLLING_Y ,
  SH_ROLLING_NOISE_PERIOD , SH_ROLLING_NOISE_SIZE , SH_ROLLING_NOISE_TURBULENCE , SH_ROLLING_NOISE_TWIST ,
  NUM_SHADER_VALUES
}
 
enum  EOscillationComponents {
  OSC_GLOBAL , OSC_BRANCH_1 , OSC_BRANCH_2 , OSC_LEAF_1_RIPPLE ,
  OSC_LEAF_1_TUMBLE , OSC_LEAF_1_TWITCH , OSC_LEAF_2_RIPPLE , OSC_LEAF_2_TUMBLE ,
  OSC_LEAF_2_TWITCH , OSC_FROND_RIPPLE , NUM_OSC_COMPONENTS
}
 

Public Member Functions

ENGINE_API FSpeedTreeWind ()
 Default constructor for FSpeedTreeWind.
 
ENGINE_API void SetParams (const FSpeedTreeWind::SParams &sParams)
 
ENGINE_API const FSpeedTreeWind::SParamsGetParams (void) const
 
ENGINE_API void SetStrength (float fStrength)
 Sets the desired strength (fStrength). The FSpeedTreeWind::Advance( ) function will make the actual strength get there smoothly based on the strength response time.
 
ENGINE_API void SetDirection (const FVector &vDir)
 
ENGINE_API void SetGustMin (float InGustMin)
 
ENGINE_API void SetGustMax (float InGustMax)
 
ENGINE_API void SetInitDirection (const FVector &vDir)
 
ENGINE_API void EnableGusting (bool bEnabled)
 
ENGINE_API void SetGustFrequency (float fGustFreq)
 
ENGINE_API void Scale (float fScalar)
 
ENGINE_API void SetTreeValues (const FVector &vBranchAnchor, float fMaxBranchLength)
 
ENGINE_API const floatGetBranchAnchor (void) const
 
ENGINE_API float GetMaxBranchLength (void) const
 
ENGINE_API void SetOption (EOptions eOption, bool bState)
 
ENGINE_API bool IsOptionEnabled (EOptions eOption) const
 
ENGINE_API void Advance (bool bEnabled, double fTime)
 
ENGINE_API const floatGetShaderTable (void) const
 
void SetNeedsReload (bool bReload=true)
 
bool NeedsReload (void)
 

Protected Member Functions

void Gust (double fTime)
 Advances the gust parameter and randomly gusts if it can (e.g., the gust is not dying off or rising) based on the gust frequency.
 
float RandomFloat (float fMin, float fMax) const
 
float LinearSigmoid (float fInput, float fLinearness)
 Converts an input value (fInput) in the range [0.0, 1.0] to an s-curve. The parameter fLinearness flattens out the s-curve where 0.0 = s-curve and 1.0 = linear.
 
float Interpolate (float fA, float fB, float fAmt)
 
void Normalize (float *pVector)
 Normalizes the the incoming vector (pVector).
 
void ComputeWindAnchor (float *pPos)
 Computes the wind anchor position based on current wind conditions.
 
 MS_ALIGN (16) float m_afShaderTable[NUM_SHADER_VALUES *2] GCC_ALIGN(16)
 

Protected Attributes

SParams m_sParams
 
float m_fStrength
 
float m_afDirection [3]
 
double m_fLastTime
 
double m_fElapsedTime
 
bool m_bGustingEnabled
 
float m_fGust
 
double m_fGustTarget
 
double m_fGustRiseTarget
 
double m_fGustFallTarget
 
double m_fGustStart
 
double m_fGustAtStart
 
double m_fGustFallStart
 
float m_fStrengthTarget
 
double m_fStrengthChangeStartTime
 
double m_fStrengthChangeEndTime
 
float m_fStrengthAtStart
 
float m_afDirectionTarget [3]
 
float m_afDirectionMidTarget [3]
 
double m_fDirectionChangeStartTime
 
double m_fDirectionChangeEndTime
 
float m_afDirectionAtStart [3]
 
float m_afRollingOffset [2]
 
float m_fCombinedStrength
 
float m_afOscillationTimes [NUM_OSC_COMPONENTS]
 
bool m_abOptions [NUM_WIND_OPTIONS]
 
float m_afBranchWindAnchor [3]
 
float m_fMaxBranchLevel1Length
 
bool m_bNeedsReload
 

Friends

FArchiveoperator<< (FArchive &Ar, FSpeedTreeWind &Wind)
 

Member Enumeration Documentation

◆ Constants

Enumerator
NUM_WIND_POINTS_IN_CURVE 
NUM_BRANCH_LEVELS 
NUM_LEAF_GROUPS 

◆ EOptions

Enumerator
GLOBAL_WIND 
GLOBAL_PRESERVE_SHAPE 
BRANCH_SIMPLE_1 
BRANCH_DIRECTIONAL_1 
BRANCH_DIRECTIONAL_FROND_1 
BRANCH_TURBULENCE_1 
BRANCH_WHIP_1 
BRANCH_OSC_COMPLEX_1 
BRANCH_SIMPLE_2 
BRANCH_DIRECTIONAL_2 
BRANCH_DIRECTIONAL_FROND_2 
BRANCH_TURBULENCE_2 
BRANCH_WHIP_2 
BRANCH_OSC_COMPLEX_2 
LEAF_RIPPLE_VERTEX_NORMAL_1 
LEAF_RIPPLE_COMPUTED_1 
LEAF_TUMBLE_1 
LEAF_TWITCH_1 
LEAF_OCCLUSION_1 
LEAF_RIPPLE_VERTEX_NORMAL_2 
LEAF_RIPPLE_COMPUTED_2 
LEAF_TUMBLE_2 
LEAF_TWITCH_2 
LEAF_OCCLUSION_2 
FROND_RIPPLE_ONE_SIDED 
FROND_RIPPLE_TWO_SIDED 
FROND_RIPPLE_ADJUST_LIGHTING 
ROLLING 
NUM_WIND_OPTIONS 

◆ EOscillationComponents

Enumerator
OSC_GLOBAL 
OSC_BRANCH_1 
OSC_BRANCH_2 
OSC_LEAF_1_RIPPLE 
OSC_LEAF_1_TUMBLE 
OSC_LEAF_1_TWITCH 
OSC_LEAF_2_RIPPLE 
OSC_LEAF_2_TUMBLE 
OSC_LEAF_2_TWITCH 
OSC_FROND_RIPPLE 
NUM_OSC_COMPONENTS 

◆ EShaderValues

Enumerator
SH_WIND_DIR_X 
SH_WIND_DIR_Y 
SH_WIND_DIR_Z 
SH_GENERAL_STRENGTH 
SH_GLOBAL_TIME 
SH_GLOBAL_DISTANCE 
SH_GLOBAL_HEIGHT 
SH_GLOBAL_HEIGHT_EXPONENT 
SH_BRANCH_1_TIME 
SH_BRANCH_1_DISTANCE 
SH_BRANCH_2_TIME 
SH_BRANCH_2_DISTANCE 
SH_BRANCH_1_TWITCH 
SH_BRANCH_1_TWITCH_FREQ_SCALE 
SH_BRANCH_2_TWITCH 
SH_BRANCH_2_TWITCH_FREQ_SCALE 
SH_BRANCH_1_WHIP 
SH_BRANCH_2_WHIP 
SH_WIND_PACK0 
SH_WIND_PACK1 
SH_WIND_ANCHOR_X 
SH_WIND_ANCHOR_Y 
SH_WIND_ANCHOR_Z 
SH_WIND_PACK2 
SH_GLOBAL_DIRECTION_ADHERENCE 
SH_BRANCH_1_DIRECTION_ADHERENCE 
SH_BRANCH_2_DIRECTION_ADHERENCE 
SH_WIND_PACK5 
SH_BRANCH_1_TURBULENCE 
SH_BRANCH_2_TURBULENCE 
SH_WIND_PACK6 
SH_WIND_PACK7 
SH_LEAF_1_RIPPLE_TIME 
SH_LEAF_1_RIPPLE_DISTANCE 
SH_LEAF_1_LEEWARD_SCALAR 
SH_WIND_PACK8 
SH_LEAF_1_TUMBLE_TIME 
SH_LEAF_1_TUMBLE_FLIP 
SH_LEAF_1_TUMBLE_TWIST 
SH_LEAF_1_TUMBLE_DIRECTION_ADHERENCE 
SH_LEAF_1_TWITCH_THROW 
SH_LEAF_1_TWITCH_SHARPNESS 
SH_LEAF_1_TWITCH_TIME 
SH_WIND_PACK9 
SH_LEAF_2_RIPPLE_TIME 
SH_LEAF_2_RIPPLE_DISTANCE 
SH_LEAF_2_LEEWARD_SCALAR 
SH_WIND_PACK10 
SH_LEAF_2_TUMBLE_TIME 
SH_LEAF_2_TUMBLE_FLIP 
SH_LEAF_2_TUMBLE_TWIST 
SH_LEAF_2_TUMBLE_DIRECTION_ADHERENCE 
SH_LEAF_2_TWITCH_THROW 
SH_LEAF_2_TWITCH_SHARPNESS 
SH_LEAF_2_TWITCH_TIME 
SH_WIND_PACK11 
SH_FROND_RIPPLE_TIME 
SH_FROND_RIPPLE_DISTANCE 
SH_FROND_RIPPLE_TILE 
SH_FROND_RIPPLE_LIGHTING_SCALAR 
SH_ROLLING_BRANCH_FIELD_MIN 
SH_ROLLING_BRANCH_LIGHTING_ADJUST 
SH_ROLLING_BRANCH_VERTICAL_OFFSET 
SH_WIND_PACK12 
SH_ROLLING_LEAF_RIPPLE_MIN 
SH_ROLLING_LEAF_TUMBLE_MIN 
SH_ROLLING_X 
SH_ROLLING_Y 
SH_ROLLING_NOISE_PERIOD 
SH_ROLLING_NOISE_SIZE 
SH_ROLLING_NOISE_TURBULENCE 
SH_ROLLING_NOISE_TWIST 
NUM_SHADER_VALUES 

Constructor & Destructor Documentation

◆ FSpeedTreeWind()

FSpeedTreeWind::FSpeedTreeWind ( )

Default constructor for FSpeedTreeWind.

Member Function Documentation

◆ Advance()

void FSpeedTreeWind::Advance ( bool  bEnabled,
double  fTime 
)

◆ ComputeWindAnchor()

void FSpeedTreeWind::ComputeWindAnchor ( float pPos)
protected

Computes the wind anchor position based on current wind conditions.

◆ EnableGusting()

void FSpeedTreeWind::EnableGusting ( bool  bEnabled)

◆ GetBranchAnchor()

const float * FSpeedTreeWind::GetBranchAnchor ( void  ) const

◆ GetMaxBranchLength()

float FSpeedTreeWind::GetMaxBranchLength ( void  ) const

◆ GetParams()

const FSpeedTreeWind::SParams & FSpeedTreeWind::GetParams ( void  ) const

◆ GetShaderTable()

const float * FSpeedTreeWind::GetShaderTable ( void  ) const

◆ Gust()

void FSpeedTreeWind::Gust ( double  fTime)
protected

Advances the gust parameter and randomly gusts if it can (e.g., the gust is not dying off or rising) based on the gust frequency.

◆ Interpolate()

FORCEINLINE float FSpeedTreeWind::Interpolate ( float  fA,
float  fB,
float  fAmt 
)
protected

◆ IsOptionEnabled()

bool FSpeedTreeWind::IsOptionEnabled ( EOptions  eOption) const

◆ LinearSigmoid()

FORCEINLINE float FSpeedTreeWind::LinearSigmoid ( float  fInput,
float  fLinearness 
)
protected

Converts an input value (fInput) in the range [0.0, 1.0] to an s-curve. The parameter fLinearness flattens out the s-curve where 0.0 = s-curve and 1.0 = linear.

◆ MS_ALIGN()

FSpeedTreeWind::MS_ALIGN ( 16  )
protected

◆ NeedsReload()

bool FSpeedTreeWind::NeedsReload ( void  )
inline

◆ Normalize()

void FSpeedTreeWind::Normalize ( float pVector)
inlineprotected

Normalizes the the incoming vector (pVector).

◆ RandomFloat()

FORCEINLINE float FSpeedTreeWind::RandomFloat ( float  fMin,
float  fMax 
) const
protected

◆ Scale()

void FSpeedTreeWind::Scale ( float  fScalar)

◆ SetDirection()

void FSpeedTreeWind::SetDirection ( const FVector vDir)

◆ SetGustFrequency()

void FSpeedTreeWind::SetGustFrequency ( float  fGustFreq)

◆ SetGustMax()

void FSpeedTreeWind::SetGustMax ( float  InGustMax)

◆ SetGustMin()

void FSpeedTreeWind::SetGustMin ( float  InGustMin)

◆ SetInitDirection()

void FSpeedTreeWind::SetInitDirection ( const FVector vDir)

◆ SetNeedsReload()

void FSpeedTreeWind::SetNeedsReload ( bool  bReload = true)
inline

◆ SetOption()

void FSpeedTreeWind::SetOption ( EOptions  eOption,
bool  bState 
)

◆ SetParams()

void FSpeedTreeWind::SetParams ( const FSpeedTreeWind::SParams sParams)

◆ SetStrength()

void FSpeedTreeWind::SetStrength ( float  fStrength)

Sets the desired strength (fStrength). The FSpeedTreeWind::Advance( ) function will make the actual strength get there smoothly based on the strength response time.

◆ SetTreeValues()

void FSpeedTreeWind::SetTreeValues ( const FVector vBranchAnchor,
float  fMaxBranchLength 
)

Friends And Related Symbol Documentation

◆ operator<<

FArchive & operator<< ( FArchive Ar,
FSpeedTreeWind Wind 
)
friend

Member Data Documentation

◆ m_abOptions

bool FSpeedTreeWind::m_abOptions[NUM_WIND_OPTIONS]
protected

◆ m_afBranchWindAnchor

float FSpeedTreeWind::m_afBranchWindAnchor[3]
protected

◆ m_afDirection

float FSpeedTreeWind::m_afDirection[3]
protected

◆ m_afDirectionAtStart

float FSpeedTreeWind::m_afDirectionAtStart[3]
protected

◆ m_afDirectionMidTarget

float FSpeedTreeWind::m_afDirectionMidTarget[3]
protected

◆ m_afDirectionTarget

float FSpeedTreeWind::m_afDirectionTarget[3]
protected

◆ m_afOscillationTimes

float FSpeedTreeWind::m_afOscillationTimes[NUM_OSC_COMPONENTS]
protected

◆ m_afRollingOffset

float FSpeedTreeWind::m_afRollingOffset[2]
protected

◆ m_bGustingEnabled

bool FSpeedTreeWind::m_bGustingEnabled
protected

◆ m_bNeedsReload

bool FSpeedTreeWind::m_bNeedsReload
protected

◆ m_fCombinedStrength

float FSpeedTreeWind::m_fCombinedStrength
protected

◆ m_fDirectionChangeEndTime

double FSpeedTreeWind::m_fDirectionChangeEndTime
protected

◆ m_fDirectionChangeStartTime

double FSpeedTreeWind::m_fDirectionChangeStartTime
protected

◆ m_fElapsedTime

double FSpeedTreeWind::m_fElapsedTime
protected

◆ m_fGust

float FSpeedTreeWind::m_fGust
protected

◆ m_fGustAtStart

double FSpeedTreeWind::m_fGustAtStart
protected

◆ m_fGustFallStart

double FSpeedTreeWind::m_fGustFallStart
protected

◆ m_fGustFallTarget

double FSpeedTreeWind::m_fGustFallTarget
protected

◆ m_fGustRiseTarget

double FSpeedTreeWind::m_fGustRiseTarget
protected

◆ m_fGustStart

double FSpeedTreeWind::m_fGustStart
protected

◆ m_fGustTarget

double FSpeedTreeWind::m_fGustTarget
protected

◆ m_fLastTime

double FSpeedTreeWind::m_fLastTime
protected

◆ m_fMaxBranchLevel1Length

float FSpeedTreeWind::m_fMaxBranchLevel1Length
protected

◆ m_fStrength

float FSpeedTreeWind::m_fStrength
protected

◆ m_fStrengthAtStart

float FSpeedTreeWind::m_fStrengthAtStart
protected

◆ m_fStrengthChangeEndTime

double FSpeedTreeWind::m_fStrengthChangeEndTime
protected

◆ m_fStrengthChangeStartTime

double FSpeedTreeWind::m_fStrengthChangeStartTime
protected

◆ m_fStrengthTarget

float FSpeedTreeWind::m_fStrengthTarget
protected

◆ m_sParams

SParams FSpeedTreeWind::m_sParams
protected

The documentation for this class was generated from the following files: