[ { "name": "ContrailRenderType", "options": [ "vertical orientation", "horizontal orientation", "media mapped", "ground mapped", "viewer facing", "double marker linked" ], "type": "enum" }, { "name": "ContrailPointStateScaleFlags", "type": "bitfield", "fields": [ "duration", "duration delta", "transition duration", "transition duration delta", "width", "color" ], "width": 32 }, { "name": "ContrailFlags", "type": "bitfield", "fields": [ "first point unfaded", "last point unfaded", "points start pinned to media", "points start pinned to ground", "points always pinned to media", "points always pinned to ground", "edge effect fades slowly" ], "width": 16 }, { "name": "ContrailScaleFlags", "type": "bitfield", "fields": [ "point generation rate", "point velocity", "point velocity delta", "point velocity cone angle", "inherited velocity fraction", "sequence animation rate", "texture scale u", "texture scale v", "texture animation u", "texture animation v" ], "width": 16 }, { "name": "ContrailPointState", "fields": [ { "name": "duration", "bounds": true, "type": "float", "unit": "seconds" }, { "name": "transition duration", "bounds": true, "type": "float", "unit": "seconds" }, { "name": "physics", "type": "TagReference", "groups": [ "point_physics" ] }, { "type": "pad", "size": 32 }, { "name": "width", "type": "float", "unit": "world units" }, { "name": "color lower bound", "type": "ColorARGB" }, { "name": "color upper bound", "type": "ColorARGB" }, { "name": "scale flags", "type": "ContrailPointStateScaleFlags" } ], "type": "struct", "size": 104 }, { "name": "Contrail", "fields": [ { "name": "flags", "type": "ContrailFlags" }, { "name": "scale flags", "type": "ContrailScaleFlags" }, { "name": "point generation rate", "type": "float", "unit": "points per second" }, { "name": "point velocity", "bounds": true, "type": "float", "unit": "world units per second" }, { "name": "point velocity cone angle", "type": "Angle" }, { "name": "inherited velocity fraction", "type": "Fraction" }, { "name": "render type", "type": "ContrailRenderType" }, { "type": "pad", "size": 2 }, { "name": "texture repeats u", "type": "float", "unit": "repeats" }, { "name": "texture repeats v", "type": "float", "unit": "repeats" }, { "name": "texture animation u", "type": "float", "unit": "repeats per second" }, { "name": "texture animation v", "type": "float", "unit": "repeats per second" }, { "name": "animation rate", "type": "float", "unit": "frames per second" }, { "name": "bitmap", "type": "TagReference", "groups": [ "bitmap" ] }, { "name": "first sequence index", "type": "Index" }, { "name": "sequence count", "type": "int16" }, { "type": "pad", "size": 64 }, { "type": "pad", "size": 36 }, { "name": "unknown int", "type": "uint32", "cache_only": true }, { "name": "shader flags", "type": "ParticleShaderFlags" }, { "name": "framebuffer blend function", "type": "FramebufferBlendFunction" }, { "name": "framebuffer fade mode", "type": "FramebufferFadeMode" }, { "name": "map flags", "type": "IsUnfilteredFlag" }, { "type": "pad", "size": 12 }, { "type": "pad", "size": 16 }, { "name": "secondary bitmap", "type": "TagReference", "groups": [ "bitmap" ] }, { "name": "anchor", "type": "ParticleAnchor" }, { "name": "secondary map flags", "type": "IsUnfilteredFlag" }, { "name": "u animation source", "type": "FunctionOut" }, { "name": "u animation function", "type": "WaveFunction" }, { "name": "u animation period", "type": "float", "unit": "seconds" }, { "name": "u animation phase", "type": "float" }, { "name": "u animation scale", "type": "float", "unit": "repeats" }, { "name": "v animation source", "type": "FunctionOut" }, { "name": "v animation function", "type": "WaveFunction" }, { "name": "v animation period", "type": "float", "unit": "seconds" }, { "name": "v animation phase", "type": "float" }, { "name": "v animation scale", "type": "float", "unit": "repeats" }, { "name": "rotation animation source", "type": "FunctionOut" }, { "name": "rotation animation function", "type": "WaveFunction" }, { "name": "rotation animation period", "type": "float" }, { "name": "rotation animation phase", "type": "float" }, { "name": "rotation animation scale", "type": "Angle" }, { "name": "rotation animation center", "type": "Point2D" }, { "type": "pad", "size": 4 }, { "name": "zsprite radius scale", "type": "float" }, { "type": "pad", "size": 20 }, { "name": "point states", "type": "Reflexive", "struct": "ContrailPointState", "maximum": 16 } ], "type": "struct", "size": 324, "group": "contrail", "needs_preprocessed": true } ]