UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SpeedTreeWind.h
Go to the documentation of this file.
1
2// SpeedTreeWind.h
3//
4// *** INTERACTIVE DATA VISUALIZATION (IDV) PROPRIETARY INFORMATION ***
5//
6// This software is supplied under the terms of a license agreement or
7// nondisclosure agreement with Interactive Data Visualization and may
8// not be copied or disclosed except in accordance with the terms of
9// that agreement.
10//
11// Copyright (c) 2003-2012 IDV, Inc.
12// All Rights Reserved.
13//
14// IDV, Inc.
15// Web: http://www.idvinc.com
16
17// SpeedTree v6.2.2 wind class rewritten for use inside UE with no other dependencies
18
19#pragma once
20
21#include "CoreMinimal.h"
22#include "ShaderParameters.h"
23#include "UniformBuffer.h"
24
26// class FSpeedTreeWind
27
29{
30public:
37
38 // shader state that are set at compile time
78
79 // values to be uploaded as shader constants
81 {
82 // g_vWindVector
84
85 // g_vWindGlobal
87
88 // g_vWindBranch
90
91 // g_vWindBranchTwitch
93
94 // g_vWindBranchWhip
96
97 // g_vWindBranchAnchor
99
100 // g_vWindBranchAdherences
102
103 // g_vWindTurbulences
105
106 // g_vWindLeaf1Ripple
108
109 // g_vWindLeaf1Tumble
111
112 // g_vWindLeaf1Twitch
114
115 // g_vWindLeaf2Ripple
117
118 // g_vWindLeaf2Tumble
120
121 // g_vWindLeaf2Twitch
123
124 // g_vWindFrondRipple
126
127 // g_vWindRollingBranch
129
130 // g_vWindRollingLeafAndDir
132
133 // g_vWindRollingNoise
135
136 // total values, including packing
138 };
139
140 // wind simulation components that oscillate
155
167
184
238
240
241 // settings
242 ENGINE_API void SetParams(const FSpeedTreeWind::SParams& sParams); // this should be called infrequently and never when trees that use it are visible
244 ENGINE_API void SetStrength(float fStrength); // use this function to set a new desired strength (it will reach that strength smoothly)
245 ENGINE_API void SetDirection(const FVector& vDir); // use this function to set a new desired direction (it will reach that direction smoothly)
246
247 //instantly set gust min/max. Trees will pop if visible. Don't call during gameplay while trees are visible.
248 ENGINE_API void SetGustMin(float InGustMin);
249 ENGINE_API void SetGustMax(float InGustMax);
250
251 ENGINE_API void SetInitDirection(const FVector& vDir); // use this function to set a starting direction, once
252 ENGINE_API void EnableGusting(bool bEnabled);
254 ENGINE_API void Scale(float fScalar);
255
256 // tree-specific values
258 ENGINE_API const float* GetBranchAnchor(void) const;
259 ENGINE_API float GetMaxBranchLength(void) const;
260
261 // shader options
264
265 // animation
266 ENGINE_API void Advance(bool bEnabled, double fTime); // called every frame to 'tick' the wind
267 ENGINE_API const float* GetShaderTable(void) const;
268
269 friend FArchive& operator<<(FArchive& Ar, FSpeedTreeWind& Wind);
270
272 bool NeedsReload(void) { return m_bNeedsReload; }
273
274
275protected:
276 void Gust(double fTime);
277 float RandomFloat(float fMin, float fMax) const;
278 float LinearSigmoid(float fInput, float fLinearness);
279 float Interpolate(float fA, float fB, float fAmt);
280 void Normalize(float* pVector);
281 void ComputeWindAnchor(float* pPos);
282
283protected:
285
288
291
293 float m_fGust;
300
305
311
313
315
317
319
322
324
325 // Includes Previous frame's values after current
327};
328
329
354 // Straight copy of the previous members for last frame's values
#define GCC_ALIGN(n)
Definition AndroidPlatform.h:163
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define END_GLOBAL_SHADER_PARAMETER_STRUCT
Definition ShaderParameterMacros.h:1669
#define BEGIN_GLOBAL_SHADER_PARAMETER_STRUCT
Definition ShaderParameterMacros.h:1663
#define SHADER_PARAMETER(MemberType, MemberName)
Definition ShaderParameterMacros.h:1684
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
Definition Archive.h:1208
Definition SpeedTreeWind.h:29
bool NeedsReload(void)
Definition SpeedTreeWind.h:272
ENGINE_API void SetTreeValues(const FVector &vBranchAnchor, float fMaxBranchLength)
Definition SpeedTreeWind.cpp:661
double m_fDirectionChangeEndTime
Definition SpeedTreeWind.h:309
EOptions
Definition SpeedTreeWind.h:40
@ ROLLING
Definition SpeedTreeWind.h:74
@ BRANCH_SIMPLE_1
Definition SpeedTreeWind.h:44
@ FROND_RIPPLE_ADJUST_LIGHTING
Definition SpeedTreeWind.h:72
@ NUM_WIND_OPTIONS
Definition SpeedTreeWind.h:76
@ BRANCH_OSC_COMPLEX_1
Definition SpeedTreeWind.h:49
@ BRANCH_SIMPLE_2
Definition SpeedTreeWind.h:51
@ GLOBAL_PRESERVE_SHAPE
Definition SpeedTreeWind.h:42
@ LEAF_RIPPLE_VERTEX_NORMAL_1
Definition SpeedTreeWind.h:58
@ BRANCH_TURBULENCE_2
Definition SpeedTreeWind.h:54
@ BRANCH_DIRECTIONAL_1
Definition SpeedTreeWind.h:45
@ FROND_RIPPLE_TWO_SIDED
Definition SpeedTreeWind.h:71
@ LEAF_TUMBLE_2
Definition SpeedTreeWind.h:66
@ GLOBAL_WIND
Definition SpeedTreeWind.h:41
@ LEAF_RIPPLE_VERTEX_NORMAL_2
Definition SpeedTreeWind.h:64
@ BRANCH_TURBULENCE_1
Definition SpeedTreeWind.h:47
@ BRANCH_OSC_COMPLEX_2
Definition SpeedTreeWind.h:56
@ LEAF_OCCLUSION_1
Definition SpeedTreeWind.h:62
@ LEAF_RIPPLE_COMPUTED_2
Definition SpeedTreeWind.h:65
@ LEAF_RIPPLE_COMPUTED_1
Definition SpeedTreeWind.h:59
@ FROND_RIPPLE_ONE_SIDED
Definition SpeedTreeWind.h:70
@ BRANCH_DIRECTIONAL_FROND_1
Definition SpeedTreeWind.h:46
@ BRANCH_WHIP_2
Definition SpeedTreeWind.h:55
@ LEAF_TWITCH_1
Definition SpeedTreeWind.h:61
@ LEAF_OCCLUSION_2
Definition SpeedTreeWind.h:68
@ BRANCH_WHIP_1
Definition SpeedTreeWind.h:48
@ LEAF_TUMBLE_1
Definition SpeedTreeWind.h:60
@ BRANCH_DIRECTIONAL_FROND_2
Definition SpeedTreeWind.h:53
@ LEAF_TWITCH_2
Definition SpeedTreeWind.h:67
@ BRANCH_DIRECTIONAL_2
Definition SpeedTreeWind.h:52
float m_afDirectionAtStart[3]
Definition SpeedTreeWind.h:310
float RandomFloat(float fMin, float fMax) const
Definition SpeedTreeWind.cpp:605
void SetNeedsReload(bool bReload=true)
Definition SpeedTreeWind.h:271
bool m_bNeedsReload
Definition SpeedTreeWind.h:323
float m_fCombinedStrength
Definition SpeedTreeWind.h:314
double m_fStrengthChangeStartTime
Definition SpeedTreeWind.h:302
double m_fLastTime
Definition SpeedTreeWind.h:289
ENGINE_API void SetGustFrequency(float fGustFreq)
Definition SpeedTreeWind.cpp:652
float m_fMaxBranchLevel1Length
Definition SpeedTreeWind.h:321
float m_afDirectionMidTarget[3]
Definition SpeedTreeWind.h:307
EOscillationComponents
Definition SpeedTreeWind.h:142
@ OSC_GLOBAL
Definition SpeedTreeWind.h:143
@ OSC_LEAF_2_TWITCH
Definition SpeedTreeWind.h:151
@ OSC_LEAF_2_RIPPLE
Definition SpeedTreeWind.h:149
@ OSC_BRANCH_1
Definition SpeedTreeWind.h:144
@ OSC_LEAF_1_RIPPLE
Definition SpeedTreeWind.h:146
@ OSC_BRANCH_2
Definition SpeedTreeWind.h:145
@ NUM_OSC_COMPONENTS
Definition SpeedTreeWind.h:153
@ OSC_LEAF_1_TWITCH
Definition SpeedTreeWind.h:148
@ OSC_LEAF_1_TUMBLE
Definition SpeedTreeWind.h:147
@ OSC_FROND_RIPPLE
Definition SpeedTreeWind.h:152
@ OSC_LEAF_2_TUMBLE
Definition SpeedTreeWind.h:150
double m_fStrengthChangeEndTime
Definition SpeedTreeWind.h:303
ENGINE_API void Advance(bool bEnabled, double fTime)
Definition SpeedTreeWind.cpp:157
ENGINE_API void SetOption(EOptions eOption, bool bState)
Definition SpeedTreeWind.cpp:722
bool m_abOptions[NUM_WIND_OPTIONS]
Definition SpeedTreeWind.h:318
EShaderValues
Definition SpeedTreeWind.h:81
@ SH_BRANCH_1_TWITCH
Definition SpeedTreeWind.h:92
@ SH_LEAF_2_TUMBLE_TWIST
Definition SpeedTreeWind.h:119
@ SH_GENERAL_STRENGTH
Definition SpeedTreeWind.h:83
@ SH_WIND_PACK6
Definition SpeedTreeWind.h:104
@ SH_LEAF_2_TUMBLE_TIME
Definition SpeedTreeWind.h:119
@ SH_WIND_PACK11
Definition SpeedTreeWind.h:122
@ SH_BRANCH_1_DIRECTION_ADHERENCE
Definition SpeedTreeWind.h:101
@ SH_FROND_RIPPLE_DISTANCE
Definition SpeedTreeWind.h:125
@ SH_ROLLING_NOISE_TWIST
Definition SpeedTreeWind.h:134
@ SH_BRANCH_1_TWITCH_FREQ_SCALE
Definition SpeedTreeWind.h:92
@ SH_ROLLING_NOISE_SIZE
Definition SpeedTreeWind.h:134
@ SH_BRANCH_2_DISTANCE
Definition SpeedTreeWind.h:89
@ SH_ROLLING_NOISE_PERIOD
Definition SpeedTreeWind.h:134
@ SH_WIND_PACK2
Definition SpeedTreeWind.h:98
@ SH_FROND_RIPPLE_LIGHTING_SCALAR
Definition SpeedTreeWind.h:125
@ SH_GLOBAL_HEIGHT_EXPONENT
Definition SpeedTreeWind.h:86
@ SH_FROND_RIPPLE_TILE
Definition SpeedTreeWind.h:125
@ SH_LEAF_2_TUMBLE_DIRECTION_ADHERENCE
Definition SpeedTreeWind.h:119
@ SH_GLOBAL_DIRECTION_ADHERENCE
Definition SpeedTreeWind.h:101
@ SH_ROLLING_LEAF_RIPPLE_MIN
Definition SpeedTreeWind.h:131
@ SH_WIND_PACK0
Definition SpeedTreeWind.h:95
@ SH_LEAF_1_RIPPLE_TIME
Definition SpeedTreeWind.h:107
@ SH_WIND_ANCHOR_Z
Definition SpeedTreeWind.h:98
@ SH_GLOBAL_HEIGHT
Definition SpeedTreeWind.h:86
@ SH_BRANCH_2_TWITCH_FREQ_SCALE
Definition SpeedTreeWind.h:92
@ SH_BRANCH_2_TIME
Definition SpeedTreeWind.h:89
@ SH_FROND_RIPPLE_TIME
Definition SpeedTreeWind.h:125
@ SH_BRANCH_1_TURBULENCE
Definition SpeedTreeWind.h:104
@ SH_ROLLING_BRANCH_VERTICAL_OFFSET
Definition SpeedTreeWind.h:128
@ SH_LEAF_2_TWITCH_SHARPNESS
Definition SpeedTreeWind.h:122
@ SH_WIND_PACK10
Definition SpeedTreeWind.h:116
@ SH_ROLLING_Y
Definition SpeedTreeWind.h:131
@ SH_GLOBAL_DISTANCE
Definition SpeedTreeWind.h:86
@ SH_LEAF_1_TWITCH_THROW
Definition SpeedTreeWind.h:113
@ SH_LEAF_2_TWITCH_TIME
Definition SpeedTreeWind.h:122
@ SH_ROLLING_BRANCH_FIELD_MIN
Definition SpeedTreeWind.h:128
@ SH_ROLLING_X
Definition SpeedTreeWind.h:131
@ SH_LEAF_1_TUMBLE_FLIP
Definition SpeedTreeWind.h:110
@ SH_BRANCH_2_WHIP
Definition SpeedTreeWind.h:95
@ SH_LEAF_1_RIPPLE_DISTANCE
Definition SpeedTreeWind.h:107
@ SH_WIND_DIR_X
Definition SpeedTreeWind.h:83
@ SH_WIND_DIR_Z
Definition SpeedTreeWind.h:83
@ SH_LEAF_1_LEEWARD_SCALAR
Definition SpeedTreeWind.h:107
@ SH_BRANCH_2_TWITCH
Definition SpeedTreeWind.h:92
@ SH_GLOBAL_TIME
Definition SpeedTreeWind.h:86
@ SH_WIND_PACK12
Definition SpeedTreeWind.h:128
@ SH_ROLLING_NOISE_TURBULENCE
Definition SpeedTreeWind.h:134
@ SH_LEAF_2_TWITCH_THROW
Definition SpeedTreeWind.h:122
@ SH_WIND_ANCHOR_Y
Definition SpeedTreeWind.h:98
@ SH_WIND_ANCHOR_X
Definition SpeedTreeWind.h:98
@ SH_LEAF_2_LEEWARD_SCALAR
Definition SpeedTreeWind.h:116
@ SH_BRANCH_2_TURBULENCE
Definition SpeedTreeWind.h:104
@ SH_LEAF_1_TWITCH_SHARPNESS
Definition SpeedTreeWind.h:113
@ SH_WIND_DIR_Y
Definition SpeedTreeWind.h:83
@ SH_LEAF_1_TWITCH_TIME
Definition SpeedTreeWind.h:113
@ SH_LEAF_1_TUMBLE_TIME
Definition SpeedTreeWind.h:110
@ SH_WIND_PACK5
Definition SpeedTreeWind.h:101
@ SH_BRANCH_1_DISTANCE
Definition SpeedTreeWind.h:89
@ SH_LEAF_1_TUMBLE_DIRECTION_ADHERENCE
Definition SpeedTreeWind.h:110
@ SH_LEAF_2_RIPPLE_DISTANCE
Definition SpeedTreeWind.h:116
@ SH_ROLLING_BRANCH_LIGHTING_ADJUST
Definition SpeedTreeWind.h:128
@ SH_LEAF_2_TUMBLE_FLIP
Definition SpeedTreeWind.h:119
@ SH_WIND_PACK1
Definition SpeedTreeWind.h:95
@ SH_WIND_PACK7
Definition SpeedTreeWind.h:104
@ SH_BRANCH_2_DIRECTION_ADHERENCE
Definition SpeedTreeWind.h:101
@ SH_WIND_PACK8
Definition SpeedTreeWind.h:107
@ SH_BRANCH_1_TIME
Definition SpeedTreeWind.h:89
@ SH_ROLLING_LEAF_TUMBLE_MIN
Definition SpeedTreeWind.h:131
@ SH_LEAF_1_TUMBLE_TWIST
Definition SpeedTreeWind.h:110
@ SH_BRANCH_1_WHIP
Definition SpeedTreeWind.h:95
@ SH_LEAF_2_RIPPLE_TIME
Definition SpeedTreeWind.h:116
@ NUM_SHADER_VALUES
Definition SpeedTreeWind.h:137
@ SH_WIND_PACK9
Definition SpeedTreeWind.h:113
SParams m_sParams
Definition SpeedTreeWind.h:284
float m_afDirectionTarget[3]
Definition SpeedTreeWind.h:306
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 fla...
Definition SpeedTreeWind.cpp:615
ENGINE_API const FSpeedTreeWind::SParams & GetParams(void) const
Definition SpeedTreeWind.cpp:634
float m_afRollingOffset[2]
Definition SpeedTreeWind.h:312
float m_fStrengthAtStart
Definition SpeedTreeWind.h:304
ENGINE_API float GetMaxBranchLength(void) const
Definition SpeedTreeWind.cpp:682
float m_fStrengthTarget
Definition SpeedTreeWind.h:301
ENGINE_API void SetStrength(float fStrength)
Sets the desired strength (fStrength). The FSpeedTreeWind::Advance( ) function will make the actual s...
Definition SpeedTreeWind.cpp:435
float m_fStrength
Definition SpeedTreeWind.h:286
double m_fGustFallStart
Definition SpeedTreeWind.h:299
double m_fDirectionChangeStartTime
Definition SpeedTreeWind.h:308
friend FArchive & operator<<(FArchive &Ar, FSpeedTreeWind &Wind)
Definition SpeedTreeWind.cpp:749
double m_fGustAtStart
Definition SpeedTreeWind.h:298
ENGINE_API void SetDirection(const FVector &vDir)
Definition SpeedTreeWind.cpp:492
ENGINE_API const float * GetShaderTable(void) const
Definition SpeedTreeWind.cpp:740
ENGINE_API void SetGustMax(float InGustMax)
Definition SpeedTreeWind.cpp:525
double m_fGustFallTarget
Definition SpeedTreeWind.h:296
ENGINE_API FSpeedTreeWind()
Default constructor for FSpeedTreeWind.
Definition SpeedTreeWind.cpp:115
float m_afDirection[3]
Definition SpeedTreeWind.h:287
ENGINE_API void SetParams(const FSpeedTreeWind::SParams &sParams)
Definition SpeedTreeWind.cpp:625
MS_ALIGN(16) float m_afShaderTable[NUM_SHADER_VALUES *2] GCC_ALIGN(16)
ENGINE_API void EnableGusting(bool bEnabled)
Definition SpeedTreeWind.cpp:643
void Normalize(float *pVector)
Normalizes the the incoming vector (pVector).
Definition SpeedTreeWind.cpp:692
double m_fGustRiseTarget
Definition SpeedTreeWind.h:295
float m_afBranchWindAnchor[3]
Definition SpeedTreeWind.h:320
float m_fGust
Definition SpeedTreeWind.h:293
double m_fGustTarget
Definition SpeedTreeWind.h:294
float Interpolate(float fA, float fB, float fAmt)
Definition SpeedTreeWind.cpp:713
Constants
Definition SpeedTreeWind.h:32
@ NUM_LEAF_GROUPS
Definition SpeedTreeWind.h:35
@ NUM_WIND_POINTS_IN_CURVE
Definition SpeedTreeWind.h:33
@ NUM_BRANCH_LEVELS
Definition SpeedTreeWind.h:34
ENGINE_API void SetGustMin(float InGustMin)
Definition SpeedTreeWind.cpp:520
ENGINE_API void SetInitDirection(const FVector &vDir)
Definition SpeedTreeWind.cpp:534
double m_fElapsedTime
Definition SpeedTreeWind.h:290
bool m_bGustingEnabled
Definition SpeedTreeWind.h:292
void ComputeWindAnchor(float *pPos)
Computes the wind anchor position based on current wind conditions.
Definition SpeedTreeWind.cpp:591
double m_fGustStart
Definition SpeedTreeWind.h:297
void Gust(double fTime)
Advances the gust parameter and randomly gusts if it can (e.g., the gust is not dying off or rising) ...
Definition SpeedTreeWind.cpp:546
float m_afOscillationTimes[NUM_OSC_COMPONENTS]
Definition SpeedTreeWind.h:316
ENGINE_API const float * GetBranchAnchor(void) const
Definition SpeedTreeWind.cpp:673
ENGINE_API bool IsOptionEnabled(EOptions eOption) const
Definition SpeedTreeWind.cpp:731
Definition SpeedTreeWind.h:157
float m_fTwitchFreqScale
Definition SpeedTreeWind.h:165
float m_fTwitch
Definition SpeedTreeWind.h:164
ENGINE_API SBranchWindLevel()
Definition SpeedTreeWind.cpp:32
float m_afDirectionAdherence[NUM_WIND_POINTS_IN_CURVE]
Definition SpeedTreeWind.h:161
float m_afDistance[NUM_WIND_POINTS_IN_CURVE]
Definition SpeedTreeWind.h:160
float m_fTurbulence
Definition SpeedTreeWind.h:163
float m_afWhip[NUM_WIND_POINTS_IN_CURVE]
Definition SpeedTreeWind.h:162
Definition SpeedTreeWind.h:186
SWindGroup m_asLeaf[NUM_LEAF_GROUPS]
Definition SpeedTreeWind.h:209
float m_fRollingNoiseTwist
Definition SpeedTreeWind.h:218
float m_fRollingLeafRippleMin
Definition SpeedTreeWind.h:226
float m_fRollingNoiseTurbulence
Definition SpeedTreeWind.h:219
float m_fGustFallScalar
Definition SpeedTreeWind.h:236
float m_fRollingNoiseSpeed
Definition SpeedTreeWind.h:221
float m_fRollingNoisePeriod
Definition SpeedTreeWind.h:220
float m_afGlobalDirectionAdherence[NUM_WIND_POINTS_IN_CURVE]
Definition SpeedTreeWind.h:203
float m_fGustDurationMin
Definition SpeedTreeWind.h:233
float m_fGustDurationMax
Definition SpeedTreeWind.h:234
float m_fAnchorOffset
Definition SpeedTreeWind.h:193
float m_afFrequencies[NUM_OSC_COMPONENTS][NUM_WIND_POINTS_IN_CURVE]
Definition SpeedTreeWind.h:197
float m_fGlobalHeight
Definition SpeedTreeWind.h:200
float m_fGustStrengthMin
Definition SpeedTreeWind.h:231
float m_fStrengthResponse
Definition SpeedTreeWind.h:190
float m_fFrondRippleTile
Definition SpeedTreeWind.h:213
float m_afGlobalDistance[NUM_WIND_POINTS_IN_CURVE]
Definition SpeedTreeWind.h:202
float m_fGustStrengthMax
Definition SpeedTreeWind.h:232
float m_fDirectionResponse
Definition SpeedTreeWind.h:191
ENGINE_API SParams()
Definition SpeedTreeWind.cpp:71
float m_afFrondRippleDistance[NUM_WIND_POINTS_IN_CURVE]
Definition SpeedTreeWind.h:212
float m_fRollingBranchVerticalOffset
Definition SpeedTreeWind.h:225
float m_fRollingBranchLightingAdjust
Definition SpeedTreeWind.h:224
float m_fGlobalHeightExponent
Definition SpeedTreeWind.h:201
float m_fGustRiseScalar
Definition SpeedTreeWind.h:235
float m_fAnchorDistanceScale
Definition SpeedTreeWind.h:194
float m_fRollingBranchFieldMin
Definition SpeedTreeWind.h:223
float m_fGustFrequency
Definition SpeedTreeWind.h:230
float m_fFrondRippleLightingScalar
Definition SpeedTreeWind.h:214
SBranchWindLevel m_asBranch[NUM_BRANCH_LEVELS]
Definition SpeedTreeWind.h:206
float m_fRollingNoiseSize
Definition SpeedTreeWind.h:217
float m_fRollingLeafTumbleMin
Definition SpeedTreeWind.h:227
Definition SpeedTreeWind.h:169
float m_fTwitchSharpness
Definition SpeedTreeWind.h:177
float m_fRollMinScale
Definition SpeedTreeWind.h:179
float m_afTumbleFlip[NUM_WIND_POINTS_IN_CURVE]
Definition SpeedTreeWind.h:173
float m_afRippleDistance[NUM_WIND_POINTS_IN_CURVE]
Definition SpeedTreeWind.h:172
float m_afTumbleDirectionAdherence[NUM_WIND_POINTS_IN_CURVE]
Definition SpeedTreeWind.h:175
float m_fRollMaxScale
Definition SpeedTreeWind.h:178
float m_fRollSpeed
Definition SpeedTreeWind.h:180
float m_afTwitchThrow[NUM_WIND_POINTS_IN_CURVE]
Definition SpeedTreeWind.h:176
ENGINE_API SWindGroup()
Definition SpeedTreeWind.cpp:49
float m_fLeewardScalar
Definition SpeedTreeWind.h:182
float m_fRollSeparation
Definition SpeedTreeWind.h:181
float m_afTumbleTwist[NUM_WIND_POINTS_IN_CURVE]
Definition SpeedTreeWind.h:174