WWF: Difference between revisions
Barncastle (talk | contribs) |
Barncastle (talk | contribs) |
||
Line 27: | Line 27: | ||
WWFParticulateRenderMode renderMode; | WWFParticulateRenderMode renderMode; | ||
int32_t particleCount; | int32_t particleCount; | ||
float strength; | float strength; // Default Particulate Strength | ||
char enableEmissionGraph; | char enableEmissionGraph; // Enable Particulate Strength Graph | ||
WWFGraphNodeVec3 graphNodes[]; | WWFGraphNodeVec3 graphNodes[]; // Particulate Strength Graph | ||
char occlusion; | char occlusion; // Enable Occlusion Testing | ||
float occlusionFadeDistance; | float occlusionFadeDistance; | ||
float occlusionIgnoreChance; | float occlusionIgnoreChance; | ||
char enableGroundParticulate; | char enableGroundParticulate; | ||
char depthFading; | #if {{Template:Sandbox/VersionRange|min_expansionlevel=8|min_build=8.0.1.26567}} | ||
WWFParticulateGeoType groundGeometryType; | |||
WWFParticulateRenderMode groundRenderMode; | |||
uint32_t groundTextureID; // fileDataId | |||
uint32_t groundSheetWidth; // Ground Cell X Count | |||
uint32_t groundSheetHeight // Ground Cell Y Count | |||
uint32_t groundAnimationCount; | |||
float groundAnimationSpeed; | |||
char groundEnableAngularTransition; // Ground Enable Texture Angle Fading | |||
float groundDecayTime; | |||
WWFVec2 groundParticulateSize; | |||
WWFVec2 groundParticulateSizeVariance; | |||
#endif | |||
char depthFading; // Enable Depth Buffer Fading | |||
float depthFadeDistance; | float depthFadeDistance; | ||
char useLookDirectionOffset; | char useLookDirectionOffset; | ||
Line 47: | Line 60: | ||
float speed; | float speed; | ||
WWFVec3 velocityVariance; | WWFVec3 velocityVariance; | ||
char enableCompute; | char enableCompute; // Enable Dynamic Rendering | ||
char enableWindEffects; | char enableWindEffects; | ||
#if {{Template:Sandbox/VersionRange|min_expansionlevel=8|min_build=8.0.1.26433}} | #if {{Template:Sandbox/VersionRange|min_expansionlevel=8|min_build=8.0.1.26433}} | ||
Line 56: | Line 69: | ||
WWFVec2 wanderAmount; | WWFVec2 wanderAmount; | ||
WWFParticulateConstraintType constraint; // Volume Constraint | WWFParticulateConstraintType constraint; // Volume Constraint | ||
char inclusiveRestraint; | char inclusiveRestraint; // Use Inclusive Constraint | ||
float groupSize; | float groupSize; // Particulate Group Size | ||
WWFVec3 particulateSize; | WWFVec3 particulateSize; | ||
WWFVec2 particulateSizeVariance; | WWFVec2 particulateSizeVariance; | ||
char randomRotation; | char randomRotation; // Randomize Initial Particle Orientation | ||
char useParticleRotation; | char useParticleRotation; | ||
float rotationSpeedMean; | float rotationSpeedMean; // Particle Rotation Speed | ||
float rotationSpeedVariance; | float rotationSpeedVariance; // Particle Rotation Speed Variance | ||
char randomizeRotationDirection; | char randomizeRotationDirection; | ||
float useParticleFading; | float useParticleFading; | ||
float particleFadeTotalTime; | float particleFadeTotalTime; // Fade Loop Length | ||
float particleFadeTimeBegin; | float particleFadeTimeBegin; // Fade Start Time | ||
float particleFadeTimeEnd; | float particleFadeTimeEnd; // Fade End Time | ||
float particleFadeTimeVariance; | float particleFadeTimeVariance; | ||
char enableHeightFading; | char enableHeightFading; | ||
WWFParticulateHeightFadeMode heightFadeMode; | WWFParticulateHeightFadeMode heightFadeMode; | ||
float heightFadeStartDistance; | float heightFadeStartDistance; // Height Fade Max Height | ||
float heightFadeVariance; | float heightFadeVariance; | ||
float heightFadeTransitionDistance; | float heightFadeTransitionDistance; | ||
Line 79: | Line 92: | ||
WWFParticulateBlendMode blendMode; | WWFParticulateBlendMode blendMode; | ||
#if {{Template:Sandbox/VersionRange|min_expansionlevel=8|min_build=8.0.1.26433}} | #if {{Template:Sandbox/VersionRange|min_expansionlevel=8|min_build=8.0.1.26433}} | ||
char useSkyFogColor; | char useSkyFogColor; // Use Sky Fog Color As Diffuse | ||
#endif | |||
#if {{Template:Sandbox/VersionRange|min_expansionlevel=8|min_build=8.0.1.26567}} | |||
char useAmbientLighting; | |||
#endif | #endif | ||
WWFArgb color; | WWFArgb color; | ||
uint32_t textureID; | uint32_t textureID; // fileDataId | ||
char useAnimation; | char useAnimation; | ||
int32_t sheetWidth; | int32_t sheetWidth; // Cell X Count | ||
int32_t sheetHeight; | int32_t sheetHeight; // Cell Y Count | ||
int32_t animationCount; | int32_t animationCount; | ||
float animationSpeed; | float animationSpeed; | ||
char enableAngularTransition; | char enableAngularTransition; // Enable Texture Angle Fading | ||
} | } | ||
Revision as of 14:47, 14 June 2018
WWF files are used to control particles in the particulate weather system that was introduced in . Unlike most other files, the WWF format uses a binary header with JSON data. This has the advantage that all field names are documented within the data itself. Additionally, the client contains meta-style information which includes the human-readable variant of these names.
Particulate based weather is enabled for DB/Weather records with a m_type of 5 and/or ᵘ a m_effectType of 4, that either join to the DB/WeatherXParticulate table or have their particulateFileDataID set. Both joins reference the required WWF files by fileDataId.
Header
char unk_0x0[4]; // always 0 filled uint32_t magic; // fnv1a(type_as_string), i.e. for "WWFParticulateGroup", 0x932c64b4 char data[];
Data
C-style representation of the JSON data. All enum values are stored as their string representation.
Note: Only the implemented parts of the WWF specification are documented.
WWFParticulateGroup
typedef C2Vectorⁱ WWFVec2; typedef C3Vectorⁱ WWFVec3; typedef C3Vectorⁱ WWFGraphNodeVec3; typedef CImVectorⁱ WWFArgb; struct WWFParticulateGroup { int32_t placeHolder; WWFParticulateGeoType geometryType; WWFParticulateRenderMode renderMode; int32_t particleCount; float strength; // Default Particulate Strength char enableEmissionGraph; // Enable Particulate Strength Graph WWFGraphNodeVec3 graphNodes[]; // Particulate Strength Graph char occlusion; // Enable Occlusion Testing float occlusionFadeDistance; float occlusionIgnoreChance; char enableGroundParticulate; #if ≥ (8.0.1.26567) WWFParticulateGeoType groundGeometryType; WWFParticulateRenderMode groundRenderMode; uint32_t groundTextureID; // fileDataId uint32_t groundSheetWidth; // Ground Cell X Count uint32_t groundSheetHeight // Ground Cell Y Count uint32_t groundAnimationCount; float groundAnimationSpeed; char groundEnableAngularTransition; // Ground Enable Texture Angle Fading float groundDecayTime; WWFVec2 groundParticulateSize; WWFVec2 groundParticulateSizeVariance; #endif char depthFading; // Enable Depth Buffer Fading float depthFadeDistance; char useLookDirectionOffset; float groupEdgeFadeDistance; float cameraNearFade; float cameraFarFade; char useForceDirection; WWFVec3 velocityMean; WWFVec3 forceDirection; float rotation; float tilt; float speed; WWFVec3 velocityVariance; char enableCompute; // Enable Dynamic Rendering char enableWindEffects; #if ≥ (8.0.1.26433) WWFVec2 massRange; #endif char useWandering; float wanderSpeed; WWFVec2 wanderAmount; WWFParticulateConstraintType constraint; // Volume Constraint char inclusiveRestraint; // Use Inclusive Constraint float groupSize; // Particulate Group Size WWFVec3 particulateSize; WWFVec2 particulateSizeVariance; char randomRotation; // Randomize Initial Particle Orientation char useParticleRotation; float rotationSpeedMean; // Particle Rotation Speed float rotationSpeedVariance; // Particle Rotation Speed Variance char randomizeRotationDirection; float useParticleFading; float particleFadeTotalTime; // Fade Loop Length float particleFadeTimeBegin; // Fade Start Time float particleFadeTimeEnd; // Fade End Time float particleFadeTimeVariance; char enableHeightFading; WWFParticulateHeightFadeMode heightFadeMode; float heightFadeStartDistance; // Height Fade Max Height float heightFadeVariance; float heightFadeTransitionDistance; char enableDeltaCulling; float deltaCullingMax; WWFParticulateBlendMode blendMode; #if ≥ (8.0.1.26433) char useSkyFogColor; // Use Sky Fog Color As Diffuse #endif #if ≥ (8.0.1.26567) char useAmbientLighting; #endif WWFArgb color; uint32_t textureID; // fileDataId char useAnimation; int32_t sheetWidth; // Cell X Count int32_t sheetHeight; // Cell Y Count int32_t animationCount; float animationSpeed; char enableAngularTransition; // Enable Texture Angle Fading } enum WWFParticulateGeoType { Quads, Triangles } enum WWFParticulateRenderMode { VelocityBillboard, CameraBillboard } enum WWFParticulateConstraintType { Center, Nearest, None } enum WWFParticulateHeightFadeMode { Flat, Relative, RelativeFollow } enum WWFParticulateBlendMode { Additive, Blended }