#pragma once

#include "Game/T5/T5.h"

namespace T5
{
    inline cspField_t flameTableFields[]{
        {"flameVar_streamChunkGravityStart",           offsetof(FlameTable, flameVar_streamChunkGravityStart),           CSPFT_FLOAT   },
        {"flameVar_streamChunkGravityEnd",             offsetof(FlameTable, flameVar_streamChunkGravityEnd),             CSPFT_FLOAT   },
        {"flameVar_streamChunkMaxSize",                offsetof(FlameTable, flameVar_streamChunkMaxSize),                CSPFT_FLOAT   },
        {"flameVar_streamChunkStartSize",              offsetof(FlameTable, flameVar_streamChunkStartSize),              CSPFT_FLOAT   },
        {"flameVar_streamChunkEndSize",                offsetof(FlameTable, flameVar_streamChunkEndSize),                CSPFT_FLOAT   },
        {"flameVar_streamChunkStartSizeRand",          offsetof(FlameTable, flameVar_streamChunkStartSizeRand),          CSPFT_FLOAT   },
        {"flameVar_streamChunkEndSizeRand",            offsetof(FlameTable, flameVar_streamChunkEndSizeRand),            CSPFT_FLOAT   },
        {"flameVar_streamChunkDistScalar",             offsetof(FlameTable, flameVar_streamChunkDistScalar),             CSPFT_FLOAT   },
        {"flameVar_streamChunkDistSwayScale",          offsetof(FlameTable, flameVar_streamChunkDistSwayScale),          CSPFT_FLOAT   },
        {"flameVar_streamChunkDistSwayVelMax",         offsetof(FlameTable, flameVar_streamChunkDistSwayVelMax),         CSPFT_FLOAT   },
        {"flameVar_streamChunkSpeed",                  offsetof(FlameTable, flameVar_streamChunkSpeed),                  CSPFT_FLOAT   },
        {"flameVar_streamChunkDecel",                  offsetof(FlameTable, flameVar_streamChunkDecel),                  CSPFT_FLOAT   },
        {"flameVar_streamChunkVelocityAddScale",       offsetof(FlameTable, flameVar_streamChunkVelocityAddScale),       CSPFT_FLOAT   },
        {"flameVar_streamChunkDuration",               offsetof(FlameTable, flameVar_streamChunkDuration),               CSPFT_FLOAT   },
        {"flameVar_streamChunkDurationScaleMaxVel",    offsetof(FlameTable, flameVar_streamChunkDurationScaleMaxVel),    CSPFT_FLOAT   },
        {"flameVar_streamChunkDurationVelScalar",      offsetof(FlameTable, flameVar_streamChunkDurationVelScalar),      CSPFT_FLOAT   },
        {"flameVar_streamChunkSizeSpeedScale",         offsetof(FlameTable, flameVar_streamChunkSizeSpeedScale),         CSPFT_FLOAT   },
        {"flameVar_streamChunkSizeAgeScale",           offsetof(FlameTable, flameVar_streamChunkSizeAgeScale),           CSPFT_FLOAT   },
        {"flameVar_streamChunkSpawnFireIntervalStart", offsetof(FlameTable, flameVar_streamChunkSpawnFireIntervalStart), CSPFT_FLOAT   },
        {"flameVar_streamChunkSpawnFireIntervalEnd",   offsetof(FlameTable, flameVar_streamChunkSpawnFireIntervalEnd),   CSPFT_FLOAT   },
        {"flameVar_streamChunkSpawnFireMinLifeFrac",   offsetof(FlameTable, flameVar_streamChunkSpawnFireMinLifeFrac),   CSPFT_FLOAT   },
        {"flameVar_streamChunkSpawnFireMaxLifeFrac",   offsetof(FlameTable, flameVar_streamChunkSpawnFireMaxLifeFrac),   CSPFT_FLOAT   },
        {"flameVar_streamChunkFireMinLifeFrac",        offsetof(FlameTable, flameVar_streamChunkFireMinLifeFrac),        CSPFT_FLOAT   },
        {"flameVar_streamChunkFireMinLifeFracStart",   offsetof(FlameTable, flameVar_streamChunkFireMinLifeFracStart),   CSPFT_FLOAT   },
        {"flameVar_streamChunkFireMinLifeFracEnd",     offsetof(FlameTable, flameVar_streamChunkFireMinLifeFracEnd),     CSPFT_FLOAT   },
        {"flameVar_streamChunkDripsMinLifeFrac",       offsetof(FlameTable, flameVar_streamChunkDripsMinLifeFrac),       CSPFT_FLOAT   },
        {"flameVar_streamChunkDripsMinLifeFracStart",  offsetof(FlameTable, flameVar_streamChunkDripsMinLifeFracStart),  CSPFT_FLOAT   },
        {"flameVar_streamChunkDripsMinLifeFracEnd",    offsetof(FlameTable, flameVar_streamChunkDripsMinLifeFracEnd),    CSPFT_FLOAT   },
        {"flameVar_streamChunkRotationRange",          offsetof(FlameTable, flameVar_streamChunkRotationRange),          CSPFT_FLOAT   },
        {"flameVar_streamSizeRandSinWave",             offsetof(FlameTable, flameVar_streamSizeRandSinWave),             CSPFT_FLOAT   },
        {"flameVar_streamSizeRandCosWave",             offsetof(FlameTable, flameVar_streamSizeRandCosWave),             CSPFT_FLOAT   },
        {"flameVar_streamDripsChunkInterval",          offsetof(FlameTable, flameVar_streamDripsChunkInterval),          CSPFT_FLOAT   },
        {"flameVar_streamDripsChunkMinFrac",           offsetof(FlameTable, flameVar_streamDripsChunkMinFrac),           CSPFT_FLOAT   },
        {"flameVar_streamDripsChunkRandFrac",          offsetof(FlameTable, flameVar_streamDripsChunkRandFrac),          CSPFT_FLOAT   },
        {"flameVar_streamSmokeChunkInterval",          offsetof(FlameTable, flameVar_streamSmokeChunkInterval),          CSPFT_FLOAT   },
        {"flameVar_streamSmokeChunkMinFrac",           offsetof(FlameTable, flameVar_streamSmokeChunkMinFrac),           CSPFT_FLOAT   },
        {"flameVar_streamSmokeChunkRandFrac",          offsetof(FlameTable, flameVar_streamSmokeChunkRandFrac),          CSPFT_FLOAT   },
        {"flameVar_streamChunkCullDistSizeFrac",       offsetof(FlameTable, flameVar_streamChunkCullDistSizeFrac),       CSPFT_FLOAT   },
        {"flameVar_streamChunkCullMinLife",            offsetof(FlameTable, flameVar_streamChunkCullMinLife),            CSPFT_FLOAT   },
        {"flameVar_streamChunkCullMaxLife",            offsetof(FlameTable, flameVar_streamChunkCullMaxLife),            CSPFT_FLOAT   },
        {"flameVar_streamFuelSizeStart",               offsetof(FlameTable, flameVar_streamFuelSizeStart),               CSPFT_FLOAT   },
        {"flameVar_streamFuelSizeEnd",                 offsetof(FlameTable, flameVar_streamFuelSizeEnd),                 CSPFT_FLOAT   },
        {"flameVar_streamFuelLength",                  offsetof(FlameTable, flameVar_streamFuelLength),                  CSPFT_FLOAT   },
        {"flameVar_streamFuelNumSegments",             offsetof(FlameTable, flameVar_streamFuelNumSegments),             CSPFT_FLOAT   },
        {"flameVar_streamFuelAnimLoopTime",            offsetof(FlameTable, flameVar_streamFuelAnimLoopTime),            CSPFT_FLOAT   },
        {"flameVar_streamFlameSizeStart",              offsetof(FlameTable, flameVar_streamFlameSizeStart),              CSPFT_FLOAT   },
        {"flameVar_streamFlameSizeEnd",                offsetof(FlameTable, flameVar_streamFlameSizeEnd),                CSPFT_FLOAT   },
        {"flameVar_streamFlameLength",                 offsetof(FlameTable, flameVar_streamFlameLength),                 CSPFT_FLOAT   },
        {"flameVar_streamFlameNumSegments",            offsetof(FlameTable, flameVar_streamFlameNumSegments),            CSPFT_FLOAT   },
        {"flameVar_streamFlameAnimLoopTime",           offsetof(FlameTable, flameVar_streamFlameAnimLoopTime),           CSPFT_FLOAT   },
        {"flameVar_streamPrimaryLightRadius",          offsetof(FlameTable, flameVar_streamPrimaryLightRadius),          CSPFT_FLOAT   },
        {"flameVar_streamPrimaryLightRadiusFlutter",   offsetof(FlameTable, flameVar_streamPrimaryLightRadiusFlutter),   CSPFT_FLOAT   },
        {"flameVar_streamPrimaryLightR",               offsetof(FlameTable, flameVar_streamPrimaryLightR),               CSPFT_FLOAT   },
        {"flameVar_streamPrimaryLightG",               offsetof(FlameTable, flameVar_streamPrimaryLightG),               CSPFT_FLOAT   },
        {"flameVar_streamPrimaryLightB",               offsetof(FlameTable, flameVar_streamPrimaryLightB),               CSPFT_FLOAT   },
        {"flameVar_streamPrimaryLightFlutterR",        offsetof(FlameTable, flameVar_streamPrimaryLightFlutterR),        CSPFT_FLOAT   },
        {"flameVar_streamPrimaryLightFlutterG",        offsetof(FlameTable, flameVar_streamPrimaryLightFlutterG),        CSPFT_FLOAT   },
        {"flameVar_streamPrimaryLightFlutterB",        offsetof(FlameTable, flameVar_streamPrimaryLightFlutterB),        CSPFT_FLOAT   },
        {"flameVar_fireLife",                          offsetof(FlameTable, flameVar_fireLife),                          CSPFT_FLOAT   },
        {"flameVar_fireLifeRand",                      offsetof(FlameTable, flameVar_fireLifeRand),                      CSPFT_FLOAT   },
        {"flameVar_fireSpeedScale",                    offsetof(FlameTable, flameVar_fireSpeedScale),                    CSPFT_FLOAT   },
        {"flameVar_fireSpeedScaleRand",                offsetof(FlameTable, flameVar_fireSpeedScaleRand),                CSPFT_FLOAT   },
        {"flameVar_fireVelocityAddZ",                  offsetof(FlameTable, flameVar_fireVelocityAddZ),                  CSPFT_FLOAT   },
        {"flameVar_fireVelocityAddZRand",              offsetof(FlameTable, flameVar_fireVelocityAddZRand),              CSPFT_FLOAT   },
        {"flameVar_fireVelocityAddSideways",           offsetof(FlameTable, flameVar_fireVelocityAddSideways),           CSPFT_FLOAT   },
        {"flameVar_fireGravity",                       offsetof(FlameTable, flameVar_fireGravity),                       CSPFT_FLOAT   },
        {"flameVar_fireGravityEnd",                    offsetof(FlameTable, flameVar_fireGravityEnd),                    CSPFT_FLOAT   },
        {"flameVar_fireMaxRotVel",                     offsetof(FlameTable, flameVar_fireMaxRotVel),                     CSPFT_FLOAT   },
        {"flameVar_fireFriction",                      offsetof(FlameTable, flameVar_fireFriction),                      CSPFT_FLOAT   },
        {"flameVar_fireEndSizeAdd",                    offsetof(FlameTable, flameVar_fireEndSizeAdd),                    CSPFT_FLOAT   },
        {"flameVar_fireStartSizeScale",                offsetof(FlameTable, flameVar_fireStartSizeScale),                CSPFT_FLOAT   },
        {"flameVar_fireEndSizeScale",                  offsetof(FlameTable, flameVar_fireEndSizeScale),                  CSPFT_FLOAT   },
        {"flameVar_dripsLife",                         offsetof(FlameTable, flameVar_dripsLife),                         CSPFT_FLOAT   },
        {"flameVar_dripsLifeRand",                     offsetof(FlameTable, flameVar_dripsLifeRand),                     CSPFT_FLOAT   },
        {"flameVar_dripsSpeedScale",                   offsetof(FlameTable, flameVar_dripsSpeedScale),                   CSPFT_FLOAT   },
        {"flameVar_dripsSpeedScaleRand",               offsetof(FlameTable, flameVar_dripsSpeedScaleRand),               CSPFT_FLOAT   },
        {"flameVar_dripsVelocityAddZ",                 offsetof(FlameTable, flameVar_dripsVelocityAddZ),                 CSPFT_FLOAT   },
        {"flameVar_dripsVelocityAddZRand",             offsetof(FlameTable, flameVar_dripsVelocityAddZRand),             CSPFT_FLOAT   },
        {"flameVar_dripsVelocityAddSideways",          offsetof(FlameTable, flameVar_dripsVelocityAddSideways),          CSPFT_FLOAT   },
        {"flameVar_dripsGravity",                      offsetof(FlameTable, flameVar_dripsGravity),                      CSPFT_FLOAT   },
        {"flameVar_dripsGravityEnd",                   offsetof(FlameTable, flameVar_dripsGravityEnd),                   CSPFT_FLOAT   },
        {"flameVar_dripsMaxRotVel",                    offsetof(FlameTable, flameVar_dripsMaxRotVel),                    CSPFT_FLOAT   },
        {"flameVar_dripsFriction",                     offsetof(FlameTable, flameVar_dripsFriction),                     CSPFT_FLOAT   },
        {"flameVar_dripsEndSizeAdd",                   offsetof(FlameTable, flameVar_dripsEndSizeAdd),                   CSPFT_FLOAT   },
        {"flameVar_dripsStartSizeScale",               offsetof(FlameTable, flameVar_dripsStartSizeScale),               CSPFT_FLOAT   },
        {"flameVar_dripsEndSizeScale",                 offsetof(FlameTable, flameVar_dripsEndSizeScale),                 CSPFT_FLOAT   },
        {"flameVar_smokeLife",                         offsetof(FlameTable, flameVar_smokeLife),                         CSPFT_FLOAT   },
        {"flameVar_smokeLifeRand",                     offsetof(FlameTable, flameVar_smokeLifeRand),                     CSPFT_FLOAT   },
        {"flameVar_smokeSpeedScale",                   offsetof(FlameTable, flameVar_smokeSpeedScale),                   CSPFT_FLOAT   },
        {"flameVar_smokeVelocityAddZ",                 offsetof(FlameTable, flameVar_smokeVelocityAddZ),                 CSPFT_FLOAT   },
        {"flameVar_smokeGravity",                      offsetof(FlameTable, flameVar_smokeGravity),                      CSPFT_FLOAT   },
        {"flameVar_smokeGravityEnd",                   offsetof(FlameTable, flameVar_smokeGravityEnd),                   CSPFT_FLOAT   },
        {"flameVar_smokeMaxRotation",                  offsetof(FlameTable, flameVar_smokeMaxRotation),                  CSPFT_FLOAT   },
        {"flameVar_smokeMaxRotVel",                    offsetof(FlameTable, flameVar_smokeMaxRotVel),                    CSPFT_FLOAT   },
        {"flameVar_smokeFriction",                     offsetof(FlameTable, flameVar_smokeFriction),                     CSPFT_FLOAT   },
        {"flameVar_smokeEndSizeAdd",                   offsetof(FlameTable, flameVar_smokeEndSizeAdd),                   CSPFT_FLOAT   },
        {"flameVar_smokeStartSizeAdd",                 offsetof(FlameTable, flameVar_smokeStartSizeAdd),                 CSPFT_FLOAT   },
        {"flameVar_smokeOriginSizeOfsZScale",          offsetof(FlameTable, flameVar_smokeOriginSizeOfsZScale),          CSPFT_FLOAT   },
        {"flameVar_smokeOriginOfsZ",                   offsetof(FlameTable, flameVar_smokeOriginOfsZ),                   CSPFT_FLOAT   },
        {"flameVar_smokeFadein",                       offsetof(FlameTable, flameVar_smokeFadein),                       CSPFT_FLOAT   },
        {"flameVar_smokeFadeout",                      offsetof(FlameTable, flameVar_smokeFadeout),                      CSPFT_FLOAT   },
        {"flameVar_smokeMaxAlpha",                     offsetof(FlameTable, flameVar_smokeMaxAlpha),                     CSPFT_FLOAT   },
        {"flameVar_smokeBrightness",                   offsetof(FlameTable, flameVar_smokeBrightness),                   CSPFT_FLOAT   },
        {"flameVar_smokeOriginOffset",                 offsetof(FlameTable, flameVar_smokeOriginOffset),                 CSPFT_FLOAT   },
        {"flameVar_collisionSpeedScale",               offsetof(FlameTable, flameVar_collisionSpeedScale),               CSPFT_FLOAT   },
        {"flameVar_collisionVolumeScale",              offsetof(FlameTable, flameVar_collisionVolumeScale),              CSPFT_FLOAT   },
        {"name",                                       offsetof(FlameTable, name),                                       CSPFT_STRING  },
        {"fire",                                       offsetof(FlameTable, fire),                                       CSPFT_MATERIAL},
        {"smoke",                                      offsetof(FlameTable, smoke),                                      CSPFT_MATERIAL},
        {"heat",                                       offsetof(FlameTable, heat),                                       CSPFT_MATERIAL},
        {"drips",                                      offsetof(FlameTable, drips),                                      CSPFT_MATERIAL},
        {"streamFuel",                                 offsetof(FlameTable, streamFuel),                                 CSPFT_MATERIAL},
        {"streamFuel2",                                offsetof(FlameTable, streamFuel2),                                CSPFT_MATERIAL},
        {"streamFlame",                                offsetof(FlameTable, streamFlame),                                CSPFT_MATERIAL},
        {"streamFlame2",                               offsetof(FlameTable, streamFlame2),                               CSPFT_MATERIAL},
        {"flameOffLoopSound",                          offsetof(FlameTable, flameOffLoopSound),                          CSPFT_STRING  },
        {"flameIgniteSound",                           offsetof(FlameTable, flameIgniteSound),                           CSPFT_STRING  },
        {"flameOnLoopSound",                           offsetof(FlameTable, flameOnLoopSound),                           CSPFT_STRING  },
        {"flameCooldownSound",                         offsetof(FlameTable, flameCooldownSound),                         CSPFT_STRING  },
    };
}
