t2-demo-parser 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DataBlockParsers.d.ts.map +1 -1
- package/dist/DataBlockParsers.js +89 -48
- package/dist/DataBlockParsers.js.map +1 -1
- package/dist/DataBlockParsers.test.js +128 -0
- package/dist/DataBlockParsers.test.js.map +1 -1
- package/dist/dataBlockDataTypes.d.ts +54 -29
- package/dist/dataBlockDataTypes.d.ts.map +1 -1
- package/dist/dataBlockDataTypes.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataBlockDataTypes.js","sourceRoot":"","sources":["../src/dataBlockDataTypes.ts"],"names":[],"mappings":"","sourcesContent":["import type { Vec3, Color3, Color4, AffineTransform } from \"./dataTypes.js\";\n\n// ---------------------------------------------------------------------------\n// Sub-structures\n// ---------------------------------------------------------------------------\n\nexport interface HudImageEntry {\n friendlyName: string;\n enemyName?: string;\n renderCenter: boolean;\n renderModulated: boolean;\n renderAlways: boolean;\n renderDistance: boolean;\n renderName: boolean;\n}\n\nexport interface ImageState {\n name: string;\n transitionOnAmmo: number;\n transitionOnNoAmmo: number;\n transitionOnTarget: number;\n transitionOnNoTarget: number;\n transitionOnWet: number;\n transitionOnNotWet: number;\n transitionOnTriggerUp: number;\n transitionOnTriggerDown: number;\n transitionOnTimeout: number;\n transitionGeneric0In: number;\n transitionGeneric0Out: number;\n timeoutValue?: number;\n waitForTimeout: boolean;\n fire: boolean;\n ejectShell: boolean;\n scaleAnimation: boolean;\n direction: boolean;\n reload: boolean;\n energyDrain?: number;\n loaded: number;\n spin: number;\n recoil: number;\n sequence?: number;\n sequenceVis?: number;\n flashSequence: boolean;\n ignoreLoadedForReady: boolean;\n emitter: number | null;\n emitterTime?: number;\n emitterNode?: number;\n sound: number | null;\n}\n\nexport interface ParticleKey {\n r: number;\n g: number;\n b: number;\n a: number;\n size: number;\n time: number;\n}\n\n// ---------------------------------------------------------------------------\n// Base DataBlock types\n// ---------------------------------------------------------------------------\n\nexport interface SimDataBlock {\n [key: string]: unknown;\n}\n\nexport interface GameBaseDataBlock extends SimDataBlock {}\n\n// ---------------------------------------------------------------------------\n// ShapeBase hierarchy\n// ---------------------------------------------------------------------------\n\nexport interface ShapeBaseDataBlock extends GameBaseDataBlock {\n crc?: number;\n shapeName?: string;\n mass?: number;\n drag?: number;\n density?: number;\n maxEnergy?: number;\n cameraMaxDist?: number;\n cameraMinDist?: number;\n cameraDefaultFov?: number;\n cameraMinFov?: number;\n cameraMaxFov?: number;\n debrisShapeName?: string;\n sensorRadius?: number;\n sensorColor?: Color4;\n heat?: number;\n cmdCategory?: string;\n cmdMiniIconName?: string;\n canControl?: boolean;\n canObserve?: boolean;\n observeThroughObject?: boolean;\n emap?: boolean;\n isInvincible?: boolean;\n renderWhenDestroyed?: boolean;\n cmdIcon?: number | null;\n explosion?: number | null;\n underwaterExplosion?: number | null;\n debris?: number | null;\n inheritEnergyFromMount?: boolean;\n firstPersonOnly?: boolean;\n useEyePoint?: boolean;\n shieldEffectLifetimeMS?: number;\n shieldEffectScale?: Vec3;\n hudImages?: HudImageEntry[];\n}\n\nexport interface ShapeBaseImageDataBlock extends GameBaseDataBlock {\n crc?: number;\n shapeName?: string;\n mountPoint?: number;\n offset?: AffineTransform;\n firstPerson?: boolean;\n mass?: number;\n usesEnergy?: boolean;\n minEnergy?: number;\n hasFlash?: boolean;\n projectile?: number | null;\n muzzleFlash?: number | null;\n isSeeker?: boolean;\n seekerRadius?: number;\n maxSeekAngle?: number;\n seekerLockTime?: number;\n seekerFreeTime?: number;\n isTargetLockRequired?: boolean;\n maxLockRange?: number;\n cloakable?: boolean;\n lightType?: number;\n lightRadius?: number;\n lightTime?: number;\n lightColor?: Color4;\n shellExitDir?: Vec3;\n shellExitVariance?: number;\n shellVelocity?: number;\n casing?: number | null;\n accuFire?: boolean;\n states?: ImageState[];\n}\n\n// ---------------------------------------------------------------------------\n// Player\n// ---------------------------------------------------------------------------\n\n/**\n * Field names for the movement/jet/splash sections are binary-verified\n * against Tribes2.exe (build 25034) initPersistFields offsets — the\n * retail struct layout differs from the SVN engine source.\n */\nexport interface PlayerDataBlock extends ShapeBaseDataBlock {\n renderFirstPerson?: boolean;\n minLookAngle?: number;\n maxLookAngle?: number;\n maxFreelookAngle?: number;\n maxTimeScale?: number;\n maxStepHeight?: number;\n jetForce?: number;\n underwaterJetForce?: number;\n underwaterVertJetFactor?: number;\n /** Energy drained per 32ms tick while jetting. */\n jetEnergyDrain?: number;\n underwaterJetEnergyDrain?: number;\n /** Jets refuse to fire below this energy level. */\n minJetEnergy?: number;\n maxJetForwardSpeed?: number;\n maxJetHorizontalPercentage?: number;\n jetEmitter?: number | null;\n jetEffect?: number;\n runForce?: number;\n runEnergyDrain?: number;\n minRunEnergy?: number;\n maxForwardSpeed?: number;\n maxBackwardSpeed?: number;\n maxSideSpeed?: number;\n maxUnderwaterForwardSpeed?: number;\n maxUnderwaterBackwardSpeed?: number;\n maxUnderwaterSideSpeed?: number;\n runSurfaceAngle?: number;\n recoverDelay?: number;\n recoverRunForceScale?: number;\n jumpForce?: number;\n jumpEnergyDrain?: number;\n minJumpEnergy?: number;\n minJumpSpeed?: number;\n maxJumpSpeed?: number;\n jumpSurfaceAngle?: number;\n jumpDelay?: number;\n horizMaxSpeed?: number;\n horizResistSpeed?: number;\n horizResistFactor?: number;\n upMaxSpeed?: number;\n upResistSpeed?: number;\n upResistFactor?: number;\n splashVelocity?: number;\n splashAngle?: number;\n splashFreqMod?: number;\n splashVelEpsilon?: number;\n bubbleEmitTime?: number;\n mediumSplashSoundVelocity?: number;\n hardSplashSoundVelocity?: number;\n exitSplashSoundVelocity?: number;\n footstepSplashHeight?: number;\n minImpactSpeed?: number;\n sounds?: (number | null)[];\n boxSize?: Vec3;\n footPuffEmitter?: number | null;\n footPuffNumParts?: number;\n footPuffRadius?: number;\n decalData?: number | null;\n decalOffset?: number;\n dustEmitter?: number | null;\n splash?: number | null;\n splashEmitters?: (number | null)[];\n groundImpactMinSpeed?: number;\n groundImpactShakeFreq?: Vec3;\n groundImpactShakeAmp?: Vec3;\n groundImpactShakeDuration?: number;\n groundImpactShakeFalloff?: number;\n /** Heat signature rates (Tribes 2; retail player.cs: 1/4 and 1/3). */\n heatDecayPerSec?: number;\n heatIncreasePerSec?: number;\n}\n\n// ---------------------------------------------------------------------------\n// Vehicles\n// ---------------------------------------------------------------------------\n\nexport interface VehicleDataBlock extends ShapeBaseDataBlock {\n bodyRestitution?: number;\n bodyFriction?: number;\n impactSounds?: (number | null)[];\n minImpactSpeed?: number;\n softImpactSpeed?: number;\n hardImpactSpeed?: number;\n minRollSpeed?: number;\n maxSteeringAngle?: number;\n maxDrag?: number;\n minDrag?: number;\n cameraOffset?: number;\n cameraLag?: number;\n jetForce?: number;\n jetEnergyDrain?: number;\n minJetEnergy?: number;\n integration?: number;\n collisionTol?: number;\n massCenter?: number;\n exitSplashSoundVelocity?: number;\n softSplashSoundVelocity?: number;\n mediumSplashSoundVelocity?: number;\n hardSplashSoundVelocity?: number;\n waterSounds?: (number | null)[];\n dustEmitter?: number | null;\n damageEmitters?: (number | null)[];\n splashEmitters?: (number | null)[];\n damageEmitterOffset0?: Vec3;\n damageEmitterOffset1?: Vec3;\n damageLevelTolerance0?: number;\n damageLevelTolerance1?: number;\n splashFreqMod?: number;\n splashVelEpsilon?: number;\n collDamageThresholdVel?: number;\n collDamageMultiplier?: number;\n}\n\nexport interface FlyingVehicleDataBlock extends VehicleDataBlock {\n jetActivateSound?: number | null;\n jetDeactivateSound?: number | null;\n jetEmitters?: (number | null)[];\n maneuveringForce?: number;\n horizontalSurfaceForce?: number;\n verticalSurfaceForce?: number;\n autoInputDamping?: number;\n steeringForce?: number;\n steeringRollForce?: number;\n rollForce?: number;\n autoAngularForce?: number;\n rotationalDrag?: number;\n maxAutoSpeed?: number;\n autoLinearForce?: number;\n hoverHeight?: number;\n createHoverHeight?: number;\n minTrailSpeed?: number;\n vertThrustMultiple?: number;\n maxForwardSpeed?: number;\n}\n\nexport interface HoverVehicleDataBlock extends VehicleDataBlock {\n dragForce?: number;\n mainThrustForce?: number;\n reverseThrustForce?: number;\n strafeThrustForce?: number;\n turboFactor?: number;\n stabLenMin?: number;\n stabLenMax?: number;\n stabSpringConstant?: number;\n stabDampingConstant?: number;\n gyroDrag?: number;\n normalForce?: number;\n restorativeForce?: number;\n steeringForce?: number;\n rollForce?: number;\n pitchForce?: number;\n floatingThrustFactor?: number;\n brakingForce?: number;\n dustTrailOffset?: Vec3;\n dustTrailFreqMod?: number;\n triggerTrailHeight?: number;\n floatSound?: number | null;\n thrustSound?: number | null;\n turboSound?: number | null;\n jetEmitters?: (number | null)[];\n dustTrailEmitter?: number | null;\n mainThrustEmitterFactor?: number;\n strafeThrustEmitterFactor?: number;\n reverseThrustEmitterFactor?: number;\n}\n\nexport interface WheeledVehicleDataBlock extends VehicleDataBlock {\n tireRadius?: number;\n tireStaticFriction?: number;\n tireKineticFriction?: number;\n tireRestitution?: number;\n tireLateralForce?: number;\n tireLateralDamping?: number;\n tireLateralRelaxation?: number;\n tireLongitudinalForce?: number;\n tireLongitudinalDamping?: number;\n tireEmitter?: number | null;\n jetSound?: number | null;\n engineSound?: number | null;\n squealSound?: number | null;\n wadeSound?: number | null;\n spring?: number;\n springDamping?: number;\n springLength?: number;\n brakeTorque?: number;\n engineTorque?: number;\n engineBrake?: number;\n maxWheelSpeed?: number;\n steeringAngle?: number;\n steeringReturn?: number;\n steeringDamping?: number;\n powerSteeringFactor?: number;\n}\n\n// ---------------------------------------------------------------------------\n// Static shapes and turrets\n// ---------------------------------------------------------------------------\n\nexport interface StaticShapeDataBlock extends ShapeBaseDataBlock {\n noIndividualDamage?: boolean;\n dynamicTypeField?: number;\n}\n\nexport interface TurretDataBlock extends StaticShapeDataBlock {\n thetaMin?: number;\n thetaMax?: number;\n thetaNull?: number;\n neverUpdateControl?: boolean;\n primaryAxis?: number;\n maxCapacitorEnergy?: number;\n capacitorRechargeRate?: number;\n}\n\nexport interface TurretImageDataBlock extends ShapeBaseImageDataBlock {\n activationMS?: number;\n deactivateDelayMS?: number;\n degPerSecTheta?: number;\n degPerSecPhi?: number;\n dontFireInsideDamageRadius?: boolean;\n damageRadius?: number;\n useCapacitor?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Items\n// ---------------------------------------------------------------------------\n\nexport interface ItemDataBlock extends ShapeBaseDataBlock {\n friction?: number;\n elasticity?: number;\n sticky?: boolean;\n gravityMod?: number;\n maxVelocity?: number;\n lightType?: number;\n lightColor?: Color4;\n lightTime?: number;\n lightRadius?: number;\n lightOnlyStatic?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Projectiles\n// ---------------------------------------------------------------------------\n\nexport interface ProjectileDataBlock extends GameBaseDataBlock {\n projectileShapeName?: string;\n faceViewerLinkTime?: number;\n lifetime?: number;\n faceViewer?: boolean;\n scale?: Vec3;\n baseEmitter?: number | null;\n delayEmitter?: number | null;\n bubbleEmitter?: number | null;\n explosion?: number | null;\n underwaterExplosion?: number | null;\n splash?: number | null;\n sound?: number | null;\n wetFireSound?: number | null;\n fireSound?: number | null;\n decals?: (number | null)[];\n lightRadius?: number;\n lightColor?: Color3 | Color4;\n underwaterLightColor?: Color3;\n explodeOnWaterImpact?: boolean;\n depthTolerance?: number;\n}\n\n/**\n * Field names binary-verified against Tribes2.exe (build 25034):\n * initPersistFields FUN_0062b3c0 / unpackData FUN_0062bea0.\n */\nexport interface LinearProjectileDataBlock extends ProjectileDataBlock {\n dryVelocity?: number;\n wetVelocity?: number;\n /** Milliseconds, tick-rounded (32ms) by the engine's onAdd. */\n fizzleTimeMS?: number;\n /** Milliseconds, tick-rounded (32ms) by the engine's onAdd. */\n lifetimeMS?: number;\n explodeOnDeath?: boolean;\n /** Degrees, 0–90. */\n reflectOnWaterImpactAngle?: number;\n /** Degrees, 0–90. */\n deflectionOnWaterImpact?: number;\n fizzleUnderwaterMS?: number;\n activateDelayMS?: number;\n doDynamicClientHits?: boolean;\n}\n\nexport interface GrenadeProjectileDataBlock extends ProjectileDataBlock {\n armingDelayMS?: number;\n muzzleVelocity?: number;\n grenadeElasticity?: number;\n grenadeFriction?: number;\n drag?: number;\n density?: number;\n gravityMod?: number;\n lifetimeMS?: number;\n}\n\nexport interface SeekerProjectileDataBlock extends ProjectileDataBlock {\n lifetimeMS?: number;\n muzzleVelocity?: number;\n turningSpeed?: number;\n proximityRadius?: number;\n terrainAvoidanceSpeed?: number;\n terrainScanAhead?: number;\n terrainHeightFail?: number;\n terrainAvoidanceRadius?: number;\n flareDistance?: number;\n flareAngle?: number;\n useFlechette?: boolean;\n maxVelocity?: number;\n acceleration?: number;\n flechetteDelayMs?: number;\n exhaustTimeMs?: number;\n exhaustNodeName?: string;\n casingShapeName?: string;\n casingDebris?: number | null;\n puffEmitter?: number | null;\n exhaustEmitter?: number | null;\n}\n\nexport interface SniperProjectileDataBlock extends ProjectileDataBlock {\n maxRifleRange?: number;\n rifleHeadMultiplier?: number;\n beamColor?: Color4;\n fadeTime?: number;\n startBeamWidth?: number;\n endBeamWidth?: number;\n pulseBeamWidth?: number;\n beamFlareAngle?: number;\n minFlareSize?: number;\n maxFlareSize?: number;\n pulseSpeed?: number;\n pulseLength?: number;\n textures?: string[];\n}\n\nexport interface ShockLanceProjectileDataBlock extends ProjectileDataBlock {\n zapDuration?: number;\n boltLength?: number;\n numParts?: number;\n lightningFreq?: number;\n lightningDensity?: number;\n lightningAmp?: number;\n lightningWidth?: number;\n shockwave?: number | null;\n startWidth?: number[];\n endWidth?: number[];\n boltSpeed?: number[];\n texWrap?: number[];\n textures?: string[];\n emitter?: number | null;\n}\n\nexport interface ELFProjectileDataBlock extends ProjectileDataBlock {\n beamRange?: number;\n beamDrainRate?: number;\n muzzleVelocity?: number;\n proximityRadius?: number;\n startWidth?: number;\n endWidth?: number;\n mainBeamTexture?: string;\n innerBeamTexture?: string;\n flareTexture?: string;\n hitEmitter?: number | null;\n}\n\nexport interface RepairProjectileDataBlock extends ProjectileDataBlock {\n beamRange?: number;\n beamRepairRate?: number;\n muzzleVelocity?: number;\n proximityRadius?: number;\n startWidth?: number;\n endWidth?: number;\n startBeamWidth?: number;\n endBeamWidth?: number;\n mainBeamTexture?: string;\n innerBeamTexture?: string;\n}\n\nexport interface TargetProjectileDataBlock extends ProjectileDataBlock {\n maxRifleRange?: number;\n beamColor?: Color4;\n startBeamWidth?: number;\n pulseBeamWidth?: number;\n beamFlareAngle?: number;\n minFlareSize?: number;\n maxFlareSize?: number;\n pulseSpeed?: number;\n pulseLength?: number;\n textures?: string[];\n}\n\n/**\n * Field names binary-verified against Tribes2.exe (build 25034):\n * initPersistFields FUN_0063fcb0 / unpackData FUN_00640160.\n */\nexport interface TracerProjectileDataBlock extends LinearProjectileDataBlock {\n tracerLength?: number;\n tracerWidth?: number;\n tracerMinPixels?: number;\n /** Registered as a bool in the engine despite the name. */\n tracerAlpha?: boolean;\n tracerColor?: Color4;\n /** Cross fades in when the view angle cosine exceeds this. */\n crossViewAng?: number;\n crossSize?: number;\n renderCross?: boolean;\n tracerTex0?: string;\n tracerTex1?: string;\n}\n\nexport interface EnergyProjectileDataBlock extends GrenadeProjectileDataBlock {\n energyDrainPerSecond?: number;\n energyMinDrain?: number;\n beamWidth?: number;\n beamRange?: number;\n numSegments?: number;\n texRepeat?: number;\n beamFlareAngle?: number;\n beamTexture?: string;\n flareTexture?: string;\n}\n\nexport interface LinearFlareProjectileDataBlock\n extends LinearProjectileDataBlock {\n numFlares?: number;\n flareColor?: Color4;\n flareTexture?: string;\n smokeTexture?: string;\n size?: number;\n flareModTexture?: number;\n smokeSize?: number;\n}\n\nexport interface BombProjectileDataBlock extends GrenadeProjectileDataBlock {\n smokeDist?: number;\n noSmoke?: number;\n boomTime?: number;\n casingDist?: number;\n smokeCushion?: number;\n noSmokeCounter?: number;\n smokeTexture?: string;\n bombTexture?: string;\n}\n\nexport interface FlareProjectileDataBlock extends GrenadeProjectileDataBlock {\n size?: number;\n useLensFlare?: boolean;\n flareTexture?: string;\n lensFlareTexture?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Effects: explosions, debris, splash, shockwave\n// ---------------------------------------------------------------------------\n\nexport interface ExplosionDataBlock extends GameBaseDataBlock {\n dtsFileName?: string;\n soundProfile?: number | null;\n particleEmitter?: number | null;\n particleDensity?: number;\n particleRadius?: number;\n faceViewer?: boolean;\n explosionScale?: Vec3;\n playSpeed?: number;\n debrisThetaMin?: number;\n debrisThetaMax?: number;\n debrisPhiMin?: number;\n debrisPhiMax?: number;\n debrisMinVelocity?: number;\n debrisMaxVelocity?: number;\n debrisNum?: number;\n debrisVariance?: number;\n delayMS?: number;\n delayVariance?: number;\n lifetimeMS?: number;\n lifetimeVariance?: number;\n offset?: number;\n shakeCamera?: boolean;\n hasLight?: boolean;\n camShakeFreq?: Vec3;\n camShakeAmp?: Vec3;\n camShakeDuration?: number;\n camShakeRadius?: number;\n camShakeFalloff?: number;\n shockwave?: number | null;\n debris?: number | null;\n emitters?: (number | null)[];\n subExplosions?: (number | null)[];\n times?: number[];\n sizes?: Vec3[];\n}\n\nexport interface DebrisDataBlock extends GameBaseDataBlock {\n elasticity?: number;\n friction?: number;\n numBounces?: number;\n bounceVariance?: number;\n minSpinSpeed?: number;\n maxSpinSpeed?: number;\n render2D?: boolean;\n explodeOnMaxBounce?: boolean;\n staticOnMaxBounce?: boolean;\n snapOnMaxBounce?: boolean;\n lifetime?: number;\n lifetimeVariance?: number;\n minSpinSpeed_dup?: number;\n maxSpinSpeed_dup?: number;\n velocity?: number;\n velocityVariance?: number;\n useRadiusMass?: boolean;\n fade?: boolean;\n baseRadius?: number;\n gravModifier?: number;\n terminalVelocity?: number;\n ignoreWater?: boolean;\n texture?: string;\n shapeName?: string;\n emitter0?: number | null;\n emitter1?: number | null;\n explosion?: number | null;\n}\n\nexport interface SplashDataBlock extends GameBaseDataBlock {\n scale?: Vec3;\n delayMS?: number;\n delayVariance?: number;\n lifetimeMS?: number;\n lifetimeVariance?: number;\n width?: number;\n numSegments?: number;\n velocity?: number;\n height?: number;\n acceleration?: number;\n texWrap?: number;\n texFactor?: number;\n ejectionFreq?: number;\n ejectionAngle?: number;\n ringLifetime?: number;\n startRadius?: number;\n explosion?: number | null;\n emitters?: (number | null)[];\n colors?: Color4[];\n times?: number[];\n textureName?: string;\n foamTexture?: string;\n}\n\nexport interface ShockwaveDataBlock extends GameBaseDataBlock {\n scale?: Vec3;\n delayMS?: number;\n delayVariance?: number;\n lifetimeMS?: number;\n lifetimeVariance?: number;\n width?: number;\n numSegments?: number;\n numVertSegments?: number;\n velocity?: number;\n height?: number;\n verticalCurve?: number;\n acceleration?: number;\n texWrap?: number;\n is2D?: boolean;\n orientToNormal?: boolean;\n mapToTerrain?: boolean;\n renderBottom?: boolean;\n renderSquare?: boolean;\n emitters?: (number | null)[];\n colors?: Color4[];\n times?: number[];\n textureName?: string;\n mapToTexture?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Particles\n// ---------------------------------------------------------------------------\n\nexport interface ParticleEmitterDataBlock extends GameBaseDataBlock {\n ejectionPeriodMS?: number;\n periodVarianceMS?: number;\n ejectionVelocity?: number;\n velocityVariance?: number;\n ejectionOffset?: number;\n thetaMin?: number;\n thetaMax?: number;\n phiReferenceVel?: number;\n phiVariance?: number;\n overrideAdvances?: boolean;\n orientParticles?: boolean;\n orientOnVelocity?: boolean;\n lifetimeMS?: number;\n lifetimeVarianceMS?: number;\n useEmitterSizes?: boolean;\n useEmitterColors?: boolean;\n particles?: (number | null)[];\n}\n\nexport interface ParticleDataBlock extends GameBaseDataBlock {\n dragCoefficient?: number;\n windCoefficient?: number;\n gravityCoefficient?: number;\n inheritedVelFactor?: number;\n constantAcceleration?: number;\n lifetimeMS?: number;\n lifetimeVarianceMS?: number;\n spinSpeed?: number;\n spinRandomMin?: number;\n spinRandomMax?: number;\n useInvAlpha?: boolean;\n keys?: ParticleKey[];\n textures?: string[];\n}\n\n// ---------------------------------------------------------------------------\n// Audio\n// ---------------------------------------------------------------------------\n\nexport interface AudioDescriptionDataBlock extends SimDataBlock {\n volume?: number;\n isLooping?: boolean;\n loopCount?: number;\n minLoopGap?: number;\n maxLoopGap?: number;\n is3D?: boolean;\n referenceDistance?: number;\n maxDistance?: number;\n coneInsideAngle?: number;\n coneOutsideAngle?: number;\n coneOutsideVolume?: number;\n coneVector?: Vec3;\n environmentLevel?: number;\n type?: number;\n}\n\nexport interface AudioProfileDataBlock extends SimDataBlock {\n description?: number | null;\n environment?: number | null;\n sampleEnvironment?: number | null;\n filename?: string;\n}\n\nexport interface AudioEnvironmentDataBlock extends SimDataBlock {\n useRoom?: boolean;\n room?: number;\n roomHF?: number;\n reflections?: number;\n reverb?: number;\n roomRolloffFactor?: number;\n decayTime?: number;\n decayHFRatio?: number;\n reflectionsDelay?: number;\n reverbDelay?: number;\n roomVolume?: number;\n damping?: number;\n environmentSize?: number;\n environmentDiffusion?: number;\n airAbsorption?: number;\n effectVolume?: number;\n flags?: number;\n}\n\nexport interface AudioSampleEnvironmentDataBlock extends SimDataBlock {\n direct?: number;\n directHF?: number;\n room?: number;\n roomHF?: number;\n obstruction?: number;\n obstructionLFRatio?: number;\n occlusion?: number;\n occlusionLFRatio?: number;\n occlusionRoomRatio?: number;\n roomRolloff?: number;\n airAbsorption?: number;\n outsideVolumeHF?: number;\n flags?: number;\n}\n\n// ---------------------------------------------------------------------------\n// Misc / utility datablocks\n// ---------------------------------------------------------------------------\n\nexport interface DecalDataBlock extends SimDataBlock {\n sizeX?: number;\n sizeY?: number;\n textureName?: string;\n}\n\nexport interface CameraDataBlock extends ShapeBaseDataBlock {}\n\nexport interface SensorDataBlock extends SimDataBlock {}\n\nexport interface TriggerDataBlock extends SimDataBlock {\n tickPeriodMS?: number;\n}\n\nexport interface ForceFieldBareDataBlock extends SimDataBlock {\n fadeMS?: number;\n baseTranslucency?: number;\n powerOffTranslucency?: number;\n fadeInOnly?: boolean;\n triggerEnable?: boolean;\n color1?: Color4;\n color2?: Color4;\n framesPerSec?: number;\n numFrames?: number;\n scrollSpeed?: number;\n umapping?: number;\n vmapping?: number;\n texture0?: string;\n texture1?: string;\n texture2?: string;\n texture3?: string;\n texture4?: string;\n}\n\nexport interface ParticleEmissionDummyDataBlock extends SimDataBlock {\n timeMultiple?: number;\n}\n\nexport interface CommanderIconDataBlock extends SimDataBlock {\n baseImage?: string;\n activeImage?: string;\n inactiveImage?: string;\n selectImage?: string;\n hilightImage?: string;\n}\n\nexport interface PrecipitationDataBlock extends SimDataBlock {\n soundProfile?: number | null;\n numDrops?: number;\n maxSize?: number;\n materialList?: string;\n sizeX?: number;\n sizeY?: number;\n movingBoxPer?: number;\n divHeightVal?: number;\n sizeBigBox?: number;\n topBoxSpeed?: number;\n frontBoxSpeed?: number;\n topBoxDrawPer?: number;\n bottomDrawHeight?: number;\n skipIfPer?: number;\n bottomSpeedPer?: number;\n frontSpeedPer?: number;\n frontRadiusPer?: number;\n}\n\nexport interface FireballAtmosphereDataBlock extends SimDataBlock {\n emitter?: number | null;\n}\n\nexport interface LightningDataBlock extends SimDataBlock {\n strikeSounds?: (number | null)[];\n strikeTextures?: string[];\n thunderSound?: number | null;\n}\n\n// ---------------------------------------------------------------------------\n// Station effects\n// ---------------------------------------------------------------------------\n\nexport interface StationFXVehicleDataBlock extends SimDataBlock {\n glowTopHeight?: number;\n glowBottomHeight?: number;\n glowTopRadius?: number;\n glowBottomRadius?: number;\n numGlowSegments?: number;\n glowFadeTime?: number;\n armLightDelay?: number;\n armLightLifetime?: number;\n armLightFadeTime?: number;\n lifetime?: number;\n numArcSegments?: number;\n sphereColor?: Color4;\n spherePhiSegments?: number;\n sphereThetaSegments?: number;\n sphereRadius?: number;\n scale?: Vec3;\n glowNodeName?: string;\n leftNodeName0?: string;\n rightNodeName0?: string;\n leftNodeName1?: string;\n rightNodeName1?: string;\n leftNodeName2?: string;\n rightNodeName2?: string;\n leftNodeName3?: string;\n rightNodeName3?: string;\n texture0?: string;\n texture1?: string;\n}\n\nexport interface StationFXPersonalDataBlock extends SimDataBlock {\n glowTopRadius?: number;\n glowBottomRadius?: number;\n glowTopHeight?: number;\n glowBottomHeight?: number;\n numGlowSegments?: number;\n numGlowPanels?: number;\n topAlpha?: number;\n bottomAlpha?: number;\n glowSpeed?: number;\n scrollSpeed?: number;\n leftNodeName?: string;\n rightNodeName?: string;\n texture0?: string;\n texture1?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Miscellaneous game datablocks\n// ---------------------------------------------------------------------------\n\nexport interface CannedChatItemDataBlock extends SimDataBlock {\n chatText?: string;\n}\n\nexport interface MissionMarkerDataBlock extends ShapeBaseDataBlock {}\n\nexport interface TSShapeConstructorDataBlock extends SimDataBlock {\n shape?: string;\n sequences?: string[];\n}\n\nexport interface EffectProfileDataBlock extends SimDataBlock {\n minDistance?: number;\n maxDistance?: number;\n audioScale?: number;\n directional?: boolean;\n effectName?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Jet / running light effects\n// ---------------------------------------------------------------------------\n\nexport interface JetEffectDataBlock extends GameBaseDataBlock {\n coolColor?: Color4;\n hotColor?: Color4;\n activateTime?: number;\n deactivateTime?: number;\n length?: number;\n width?: number;\n speed?: number;\n stretch?: number;\n yOffset?: number;\n texture?: string;\n}\n\nexport interface RunningLightDataBlock extends GameBaseDataBlock {\n radius?: number;\n color?: Color4;\n type?: number;\n length?: number;\n nodeName?: string;\n direction?: Vec3;\n offset?: Vec3;\n texture?: string;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"dataBlockDataTypes.js","sourceRoot":"","sources":["../src/dataBlockDataTypes.ts"],"names":[],"mappings":"","sourcesContent":["import type { Vec3, Color3, Color4, AffineTransform } from \"./dataTypes.js\";\n\n// ---------------------------------------------------------------------------\n// Sub-structures\n// ---------------------------------------------------------------------------\n\nexport interface HudImageEntry {\n friendlyName: string;\n enemyName?: string;\n renderCenter: boolean;\n renderModulated: boolean;\n renderAlways: boolean;\n renderDistance: boolean;\n renderName: boolean;\n}\n\n/**\n * One ShapeBaseImageData state. Transition values are 1-based state\n * indices (0 = no transition), in the engine's own packing order —\n * binary-verified; earlier versions had the names rotated by two slots\n * (no NotLoaded/Loaded, phantom generic0 pair) and consumers carried a\n * remap table to compensate.\n */\nexport interface ImageState {\n name: string;\n transitionOnNotLoaded: number;\n transitionOnLoaded: number;\n transitionOnAmmo: number;\n transitionOnNoAmmo: number;\n transitionOnTarget: number;\n transitionOnNoTarget: number;\n transitionOnWet: number;\n transitionOnNotWet: number;\n transitionOnTriggerUp: number;\n transitionOnTriggerDown: number;\n transitionOnTimeout: number;\n timeoutValue?: number;\n waitForTimeout: boolean;\n fire: boolean;\n ejectShell: boolean;\n scaleAnimation: boolean;\n direction: boolean;\n reload: boolean;\n energyDrain?: number;\n loaded: number;\n spin: number;\n recoil: number;\n sequence?: number;\n sequenceVis?: number;\n flashSequence: boolean;\n ignoreLoadedForReady: boolean;\n emitter: number | null;\n emitterTime?: number;\n emitterNode?: number;\n sound: number | null;\n}\n\nexport interface ParticleKey {\n r: number;\n g: number;\n b: number;\n a: number;\n size: number;\n time: number;\n}\n\n// ---------------------------------------------------------------------------\n// Base DataBlock types\n// ---------------------------------------------------------------------------\n\nexport interface SimDataBlock {\n [key: string]: unknown;\n}\n\nexport interface GameBaseDataBlock extends SimDataBlock {}\n\n// ---------------------------------------------------------------------------\n// ShapeBase hierarchy\n// ---------------------------------------------------------------------------\n\nexport interface ShapeBaseDataBlock extends GameBaseDataBlock {\n crc?: number;\n shapeName?: string;\n mass?: number;\n drag?: number;\n density?: number;\n maxEnergy?: number;\n cameraMaxDist?: number;\n cameraMinDist?: number;\n cameraDefaultFov?: number;\n cameraMinFov?: number;\n cameraMaxFov?: number;\n debrisShapeName?: string;\n sensorRadius?: number;\n sensorColor?: Color4;\n heat?: number;\n cmdCategory?: string;\n cmdMiniIconName?: string;\n canControl?: boolean;\n canObserve?: boolean;\n observeThroughObject?: boolean;\n emap?: boolean;\n isInvincible?: boolean;\n renderWhenDestroyed?: boolean;\n cmdIcon?: number | null;\n explosion?: number | null;\n underwaterExplosion?: number | null;\n debris?: number | null;\n inheritEnergyFromMount?: boolean;\n firstPersonOnly?: boolean;\n useEyePoint?: boolean;\n shieldEffectLifetimeMS?: number;\n shieldEffectScale?: Vec3;\n hudImages?: HudImageEntry[];\n}\n\nexport interface ShapeBaseImageDataBlock extends GameBaseDataBlock {\n crc?: number;\n shapeName?: string;\n mountPoint?: number;\n offset?: AffineTransform;\n firstPerson?: boolean;\n mass?: number;\n usesEnergy?: boolean;\n minEnergy?: number;\n hasFlash?: boolean;\n projectile?: number | null;\n muzzleFlash?: number | null;\n isSeeker?: boolean;\n seekerRadius?: number;\n maxSeekAngle?: number;\n seekerLockTime?: number;\n seekerFreeTime?: number;\n isTargetLockRequired?: boolean;\n maxLockRange?: number;\n cloakable?: boolean;\n lightType?: number;\n lightRadius?: number;\n lightTime?: number;\n lightColor?: Color4;\n shellExitDir?: Vec3;\n shellExitVariance?: number;\n shellVelocity?: number;\n casing?: number | null;\n accuFire?: boolean;\n states?: ImageState[];\n}\n\n// ---------------------------------------------------------------------------\n// Player\n// ---------------------------------------------------------------------------\n\n/**\n * Field names for the movement/jet/splash sections are binary-verified\n * against Tribes2.exe (build 25034) initPersistFields offsets — the\n * retail struct layout differs from the SVN engine source.\n */\nexport interface PlayerDataBlock extends ShapeBaseDataBlock {\n renderFirstPerson?: boolean;\n minLookAngle?: number;\n maxLookAngle?: number;\n maxFreelookAngle?: number;\n maxTimeScale?: number;\n maxStepHeight?: number;\n jetForce?: number;\n underwaterJetForce?: number;\n underwaterVertJetFactor?: number;\n /** Energy drained per 32ms tick while jetting. */\n jetEnergyDrain?: number;\n underwaterJetEnergyDrain?: number;\n /** Jets refuse to fire below this energy level. */\n minJetEnergy?: number;\n maxJetForwardSpeed?: number;\n maxJetHorizontalPercentage?: number;\n jetEmitter?: number | null;\n jetEffect?: number;\n runForce?: number;\n runEnergyDrain?: number;\n minRunEnergy?: number;\n maxForwardSpeed?: number;\n maxBackwardSpeed?: number;\n maxSideSpeed?: number;\n maxUnderwaterForwardSpeed?: number;\n maxUnderwaterBackwardSpeed?: number;\n maxUnderwaterSideSpeed?: number;\n runSurfaceAngle?: number;\n recoverDelay?: number;\n recoverRunForceScale?: number;\n jumpForce?: number;\n jumpEnergyDrain?: number;\n minJumpEnergy?: number;\n minJumpSpeed?: number;\n maxJumpSpeed?: number;\n jumpSurfaceAngle?: number;\n jumpDelay?: number;\n horizMaxSpeed?: number;\n horizResistSpeed?: number;\n horizResistFactor?: number;\n upMaxSpeed?: number;\n upResistSpeed?: number;\n upResistFactor?: number;\n splashVelocity?: number;\n splashAngle?: number;\n splashFreqMod?: number;\n splashVelEpsilon?: number;\n bubbleEmitTime?: number;\n mediumSplashSoundVelocity?: number;\n hardSplashSoundVelocity?: number;\n exitSplashSoundVelocity?: number;\n footstepSplashHeight?: number;\n minImpactSpeed?: number;\n sounds?: (number | null)[];\n boxSize?: Vec3;\n footPuffEmitter?: number | null;\n footPuffNumParts?: number;\n footPuffRadius?: number;\n decalData?: number | null;\n decalOffset?: number;\n dustEmitter?: number | null;\n splash?: number | null;\n splashEmitters?: (number | null)[];\n groundImpactMinSpeed?: number;\n groundImpactShakeFreq?: Vec3;\n groundImpactShakeAmp?: Vec3;\n groundImpactShakeDuration?: number;\n groundImpactShakeFalloff?: number;\n /** Heat signature rates (Tribes 2; retail player.cs: 1/4 and 1/3). */\n heatDecayPerSec?: number;\n heatIncreasePerSec?: number;\n}\n\n// ---------------------------------------------------------------------------\n// Vehicles\n// ---------------------------------------------------------------------------\n\nexport interface VehicleDataBlock extends ShapeBaseDataBlock {\n bodyRestitution?: number;\n bodyFriction?: number;\n impactSounds?: (number | null)[];\n minImpactSpeed?: number;\n softImpactSpeed?: number;\n hardImpactSpeed?: number;\n minRollSpeed?: number;\n maxSteeringAngle?: number;\n maxDrag?: number;\n minDrag?: number;\n cameraOffset?: number;\n cameraLag?: number;\n jetForce?: number;\n jetEnergyDrain?: number;\n minJetEnergy?: number;\n integration?: number;\n collisionTol?: number;\n massCenter?: number;\n exitSplashSoundVelocity?: number;\n softSplashSoundVelocity?: number;\n mediumSplashSoundVelocity?: number;\n hardSplashSoundVelocity?: number;\n waterSounds?: (number | null)[];\n dustEmitter?: number | null;\n damageEmitters?: (number | null)[];\n splashEmitters?: (number | null)[];\n damageEmitterOffset0?: Vec3;\n damageEmitterOffset1?: Vec3;\n damageLevelTolerance0?: number;\n damageLevelTolerance1?: number;\n splashFreqMod?: number;\n splashVelEpsilon?: number;\n collDamageThresholdVel?: number;\n collDamageMultiplier?: number;\n}\n\nexport interface FlyingVehicleDataBlock extends VehicleDataBlock {\n jetActivateSound?: number | null;\n jetDeactivateSound?: number | null;\n jetEmitters?: (number | null)[];\n maneuveringForce?: number;\n horizontalSurfaceForce?: number;\n verticalSurfaceForce?: number;\n autoInputDamping?: number;\n steeringForce?: number;\n steeringRollForce?: number;\n rollForce?: number;\n autoAngularForce?: number;\n rotationalDrag?: number;\n maxAutoSpeed?: number;\n autoLinearForce?: number;\n hoverHeight?: number;\n createHoverHeight?: number;\n minTrailSpeed?: number;\n vertThrustMultiple?: number;\n maxForwardSpeed?: number;\n}\n\nexport interface HoverVehicleDataBlock extends VehicleDataBlock {\n dragForce?: number;\n mainThrustForce?: number;\n reverseThrustForce?: number;\n strafeThrustForce?: number;\n turboFactor?: number;\n stabLenMin?: number;\n stabLenMax?: number;\n stabSpringConstant?: number;\n stabDampingConstant?: number;\n gyroDrag?: number;\n normalForce?: number;\n restorativeForce?: number;\n steeringForce?: number;\n rollForce?: number;\n pitchForce?: number;\n floatingThrustFactor?: number;\n brakingForce?: number;\n dustTrailOffset?: Vec3;\n dustTrailFreqMod?: number;\n triggerTrailHeight?: number;\n floatSound?: number | null;\n thrustSound?: number | null;\n turboSound?: number | null;\n jetEmitters?: (number | null)[];\n dustTrailEmitter?: number | null;\n mainThrustEmitterFactor?: number;\n strafeThrustEmitterFactor?: number;\n reverseThrustEmitterFactor?: number;\n}\n\nexport interface WheeledVehicleDataBlock extends VehicleDataBlock {\n tireRadius?: number;\n tireStaticFriction?: number;\n tireKineticFriction?: number;\n tireRestitution?: number;\n tireLateralForce?: number;\n tireLateralDamping?: number;\n tireLateralRelaxation?: number;\n tireLongitudinalForce?: number;\n tireLongitudinalDamping?: number;\n tireEmitter?: number | null;\n jetSound?: number | null;\n engineSound?: number | null;\n squealSound?: number | null;\n wadeSound?: number | null;\n spring?: number;\n springDamping?: number;\n springLength?: number;\n brakeTorque?: number;\n engineTorque?: number;\n engineBrake?: number;\n maxWheelSpeed?: number;\n steeringAngle?: number;\n steeringReturn?: number;\n steeringDamping?: number;\n powerSteeringFactor?: number;\n}\n\n// ---------------------------------------------------------------------------\n// Static shapes and turrets\n// ---------------------------------------------------------------------------\n\nexport interface StaticShapeDataBlock extends ShapeBaseDataBlock {\n noIndividualDamage?: boolean;\n dynamicTypeField?: number;\n}\n\nexport interface TurretDataBlock extends StaticShapeDataBlock {\n thetaMin?: number;\n thetaMax?: number;\n thetaNull?: number;\n neverUpdateControl?: boolean;\n primaryAxis?: number;\n maxCapacitorEnergy?: number;\n capacitorRechargeRate?: number;\n}\n\nexport interface TurretImageDataBlock extends ShapeBaseImageDataBlock {\n activationMS?: number;\n deactivateDelayMS?: number;\n degPerSecTheta?: number;\n degPerSecPhi?: number;\n dontFireInsideDamageRadius?: boolean;\n damageRadius?: number;\n useCapacitor?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Items\n// ---------------------------------------------------------------------------\n\nexport interface ItemDataBlock extends ShapeBaseDataBlock {\n friction?: number;\n elasticity?: number;\n sticky?: boolean;\n gravityMod?: number;\n maxVelocity?: number;\n lightType?: number;\n lightColor?: Color4;\n lightTime?: number;\n lightRadius?: number;\n lightOnlyStatic?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Projectiles\n// ---------------------------------------------------------------------------\n\nexport interface ProjectileDataBlock extends GameBaseDataBlock {\n projectileShapeName?: string;\n faceViewerLinkTime?: number;\n lifetime?: number;\n faceViewer?: boolean;\n scale?: Vec3;\n baseEmitter?: number | null;\n delayEmitter?: number | null;\n bubbleEmitter?: number | null;\n explosion?: number | null;\n underwaterExplosion?: number | null;\n splash?: number | null;\n sound?: number | null;\n wetFireSound?: number | null;\n fireSound?: number | null;\n decals?: (number | null)[];\n lightRadius?: number;\n lightColor?: Color3 | Color4;\n underwaterLightColor?: Color3;\n explodeOnWaterImpact?: boolean;\n depthTolerance?: number;\n}\n\n/**\n * Field names binary-verified against Tribes2.exe (build 25034):\n * initPersistFields FUN_0062b3c0 / unpackData FUN_0062bea0.\n */\nexport interface LinearProjectileDataBlock extends ProjectileDataBlock {\n dryVelocity?: number;\n wetVelocity?: number;\n /** Milliseconds, tick-rounded (32ms) by the engine's onAdd. */\n fizzleTimeMS?: number;\n /** Milliseconds, tick-rounded (32ms) by the engine's onAdd. */\n lifetimeMS?: number;\n explodeOnDeath?: boolean;\n /** Degrees, 0–90. */\n reflectOnWaterImpactAngle?: number;\n /** Degrees, 0–90. */\n deflectionOnWaterImpact?: number;\n fizzleUnderwaterMS?: number;\n activateDelayMS?: number;\n doDynamicClientHits?: boolean;\n}\n\nexport interface GrenadeProjectileDataBlock extends ProjectileDataBlock {\n armingDelayMS?: number;\n muzzleVelocity?: number;\n grenadeElasticity?: number;\n grenadeFriction?: number;\n drag?: number;\n density?: number;\n gravityMod?: number;\n lifetimeMS?: number;\n}\n\nexport interface SeekerProjectileDataBlock extends ProjectileDataBlock {\n lifetimeMS?: number;\n muzzleVelocity?: number;\n turningSpeed?: number;\n proximityRadius?: number;\n terrainAvoidanceSpeed?: number;\n terrainScanAhead?: number;\n terrainHeightFail?: number;\n terrainAvoidanceRadius?: number;\n flareDistance?: number;\n flareAngle?: number;\n useFlechette?: boolean;\n maxVelocity?: number;\n acceleration?: number;\n flechetteDelayMs?: number;\n exhaustTimeMs?: number;\n exhaustNodeName?: string;\n casingShapeName?: string;\n casingDebris?: number | null;\n puffEmitter?: number | null;\n exhaustEmitter?: number | null;\n}\n\nexport interface SniperProjectileDataBlock extends ProjectileDataBlock {\n maxRifleRange?: number;\n rifleHeadMultiplier?: number;\n beamColor?: Color4;\n fadeTime?: number;\n startBeamWidth?: number;\n endBeamWidth?: number;\n pulseBeamWidth?: number;\n beamFlareAngle?: number;\n minFlareSize?: number;\n maxFlareSize?: number;\n pulseSpeed?: number;\n pulseLength?: number;\n textures?: string[];\n}\n\nexport interface ShockLanceProjectileDataBlock extends ProjectileDataBlock {\n zapDuration?: number;\n boltLength?: number;\n numParts?: number;\n lightningFreq?: number;\n lightningDensity?: number;\n lightningAmp?: number;\n lightningWidth?: number;\n shockwave?: number | null;\n startWidth?: number[];\n endWidth?: number[];\n boltSpeed?: number[];\n texWrap?: number[];\n textures?: string[];\n emitter?: number | null;\n}\n\n/**\n * Field names binary-verified against Tribes2.exe (build 25034):\n * initPersistFields FUN_0064a860 / unpackData FUN_0064ae00. The ELF\n * gun: a wavy main beam with lightning arcs around it.\n */\nexport interface ELFProjectileDataBlock extends ProjectileDataBlock {\n beamRange?: number;\n mainBeamWidth?: number;\n mainBeamSpeed?: number;\n mainBeamRepeat?: number;\n lightningWidth?: number;\n lightningDist?: number;\n /** textures[0..2] — retail: ELFBeam, ELFLightning, BlueImpact. */\n textures?: string[];\n emitter?: number | null;\n}\n\n/**\n * Field names binary-verified against Tribes2.exe (build 25034):\n * initPersistFields FUN_00644910 / unpackData FUN_00644c40. The repair\n * beam: a segmented ribbon (numSegments) with a blur trail.\n */\nexport interface RepairProjectileDataBlock extends ProjectileDataBlock {\n beamRange?: number;\n beamWidth?: number;\n /** Engine S32 (the old decode read its raw bits as a float). */\n numSegments?: number;\n beamSpeed?: number;\n texRepeat?: number;\n blurFreq?: number;\n blurLifetime?: number;\n cutoffAngle?: number;\n /** textures[0..1] — retail: special/redbump2, special/redflare. */\n textures?: string[];\n}\n\nexport interface TargetProjectileDataBlock extends ProjectileDataBlock {\n maxRifleRange?: number;\n beamColor?: Color4;\n startBeamWidth?: number;\n pulseBeamWidth?: number;\n beamFlareAngle?: number;\n minFlareSize?: number;\n maxFlareSize?: number;\n pulseSpeed?: number;\n pulseLength?: number;\n textures?: string[];\n}\n\n/**\n * Field names binary-verified against Tribes2.exe (build 25034):\n * initPersistFields FUN_0063fcb0 / unpackData FUN_00640160.\n */\nexport interface TracerProjectileDataBlock extends LinearProjectileDataBlock {\n tracerLength?: number;\n tracerWidth?: number;\n tracerMinPixels?: number;\n /** Registered as a bool in the engine despite the name. */\n tracerAlpha?: boolean;\n tracerColor?: Color4;\n /** Cross fades in when the view angle cosine exceeds this. */\n crossViewAng?: number;\n crossSize?: number;\n renderCross?: boolean;\n tracerTex0?: string;\n tracerTex1?: string;\n}\n\n/**\n * Field names binary-verified against Tribes2.exe (build 25034):\n * initPersistFields FUN_00694b40 / unpackData FUN_00694d80. The blaster\n * bolt: an oriented additive quad (texture0) with an edge-on cross\n * (texture1) and an untextured motion-blur tail (blur* fields).\n */\nexport interface EnergyProjectileDataBlock extends GrenadeProjectileDataBlock {\n /** Cross fades in when the view angle cosine exceeds this (0x168). */\n crossViewAng?: number;\n crossSize?: number;\n blurLifetime?: number;\n blurWidth?: number;\n /** Blur tail color; only RGB is transmitted (alpha defaults to 1). */\n blurColor?: Color4;\n /** texture[0] — the bolt quad (e.g. \"special/blasterBolt\"). */\n texture0?: string;\n /** texture[1] — the edge-on cross (e.g. \"special/blasterBoltCross\"). */\n texture1?: string;\n}\n\nexport interface LinearFlareProjectileDataBlock extends LinearProjectileDataBlock {\n numFlares?: number;\n flareColor?: Color4;\n flareTexture?: string;\n smokeTexture?: string;\n size?: number;\n flareModTexture?: number;\n smokeSize?: number;\n}\n\nexport interface BombProjectileDataBlock extends GrenadeProjectileDataBlock {\n smokeDist?: number;\n noSmoke?: number;\n boomTime?: number;\n casingDist?: number;\n smokeCushion?: number;\n noSmokeCounter?: number;\n smokeTexture?: string;\n bombTexture?: string;\n}\n\nexport interface FlareProjectileDataBlock extends GrenadeProjectileDataBlock {\n size?: number;\n useLensFlare?: boolean;\n flareTexture?: string;\n lensFlareTexture?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Effects: explosions, debris, splash, shockwave\n// ---------------------------------------------------------------------------\n\nexport interface ExplosionDataBlock extends GameBaseDataBlock {\n dtsFileName?: string;\n soundProfile?: number | null;\n particleEmitter?: number | null;\n particleDensity?: number;\n particleRadius?: number;\n faceViewer?: boolean;\n explosionScale?: Vec3;\n playSpeed?: number;\n debrisThetaMin?: number;\n debrisThetaMax?: number;\n debrisPhiMin?: number;\n debrisPhiMax?: number;\n debrisMinVelocity?: number;\n debrisMaxVelocity?: number;\n debrisNum?: number;\n debrisVariance?: number;\n delayMS?: number;\n delayVariance?: number;\n lifetimeMS?: number;\n lifetimeVariance?: number;\n offset?: number;\n shakeCamera?: boolean;\n hasLight?: boolean;\n camShakeFreq?: Vec3;\n camShakeAmp?: Vec3;\n camShakeDuration?: number;\n camShakeRadius?: number;\n camShakeFalloff?: number;\n shockwave?: number | null;\n debris?: number | null;\n emitters?: (number | null)[];\n subExplosions?: (number | null)[];\n times?: number[];\n sizes?: Vec3[];\n}\n\nexport interface DebrisDataBlock extends GameBaseDataBlock {\n elasticity?: number;\n friction?: number;\n numBounces?: number;\n bounceVariance?: number;\n minSpinSpeed?: number;\n maxSpinSpeed?: number;\n render2D?: boolean;\n explodeOnMaxBounce?: boolean;\n staticOnMaxBounce?: boolean;\n snapOnMaxBounce?: boolean;\n lifetime?: number;\n lifetimeVariance?: number;\n minSpinSpeed_dup?: number;\n maxSpinSpeed_dup?: number;\n velocity?: number;\n velocityVariance?: number;\n useRadiusMass?: boolean;\n fade?: boolean;\n baseRadius?: number;\n gravModifier?: number;\n terminalVelocity?: number;\n ignoreWater?: boolean;\n texture?: string;\n shapeName?: string;\n emitter0?: number | null;\n emitter1?: number | null;\n explosion?: number | null;\n}\n\nexport interface SplashDataBlock extends GameBaseDataBlock {\n scale?: Vec3;\n delayMS?: number;\n delayVariance?: number;\n lifetimeMS?: number;\n lifetimeVariance?: number;\n width?: number;\n numSegments?: number;\n velocity?: number;\n height?: number;\n acceleration?: number;\n texWrap?: number;\n texFactor?: number;\n ejectionFreq?: number;\n ejectionAngle?: number;\n ringLifetime?: number;\n startRadius?: number;\n explosion?: number | null;\n emitters?: (number | null)[];\n colors?: Color4[];\n times?: number[];\n textureName?: string;\n foamTexture?: string;\n}\n\nexport interface ShockwaveDataBlock extends GameBaseDataBlock {\n scale?: Vec3;\n delayMS?: number;\n delayVariance?: number;\n lifetimeMS?: number;\n lifetimeVariance?: number;\n width?: number;\n numSegments?: number;\n numVertSegments?: number;\n velocity?: number;\n height?: number;\n verticalCurve?: number;\n acceleration?: number;\n texWrap?: number;\n is2D?: boolean;\n orientToNormal?: boolean;\n mapToTerrain?: boolean;\n renderBottom?: boolean;\n renderSquare?: boolean;\n emitters?: (number | null)[];\n colors?: Color4[];\n times?: number[];\n textureName?: string;\n mapToTexture?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Particles\n// ---------------------------------------------------------------------------\n\nexport interface ParticleEmitterDataBlock extends GameBaseDataBlock {\n ejectionPeriodMS?: number;\n periodVarianceMS?: number;\n ejectionVelocity?: number;\n velocityVariance?: number;\n ejectionOffset?: number;\n thetaMin?: number;\n thetaMax?: number;\n phiReferenceVel?: number;\n phiVariance?: number;\n overrideAdvances?: boolean;\n orientParticles?: boolean;\n orientOnVelocity?: boolean;\n lifetimeMS?: number;\n lifetimeVarianceMS?: number;\n useEmitterSizes?: boolean;\n useEmitterColors?: boolean;\n particles?: (number | null)[];\n}\n\nexport interface ParticleDataBlock extends GameBaseDataBlock {\n dragCoefficient?: number;\n windCoefficient?: number;\n gravityCoefficient?: number;\n inheritedVelFactor?: number;\n constantAcceleration?: number;\n lifetimeMS?: number;\n lifetimeVarianceMS?: number;\n spinSpeed?: number;\n spinRandomMin?: number;\n spinRandomMax?: number;\n useInvAlpha?: boolean;\n keys?: ParticleKey[];\n textures?: string[];\n}\n\n// ---------------------------------------------------------------------------\n// Audio\n// ---------------------------------------------------------------------------\n\nexport interface AudioDescriptionDataBlock extends SimDataBlock {\n volume?: number;\n isLooping?: boolean;\n loopCount?: number;\n minLoopGap?: number;\n maxLoopGap?: number;\n is3D?: boolean;\n referenceDistance?: number;\n maxDistance?: number;\n coneInsideAngle?: number;\n coneOutsideAngle?: number;\n coneOutsideVolume?: number;\n coneVector?: Vec3;\n environmentLevel?: number;\n type?: number;\n}\n\nexport interface AudioProfileDataBlock extends SimDataBlock {\n description?: number | null;\n environment?: number | null;\n sampleEnvironment?: number | null;\n filename?: string;\n}\n\nexport interface AudioEnvironmentDataBlock extends SimDataBlock {\n useRoom?: boolean;\n room?: number;\n roomHF?: number;\n reflections?: number;\n reverb?: number;\n roomRolloffFactor?: number;\n decayTime?: number;\n decayHFRatio?: number;\n reflectionsDelay?: number;\n reverbDelay?: number;\n roomVolume?: number;\n damping?: number;\n environmentSize?: number;\n environmentDiffusion?: number;\n airAbsorption?: number;\n effectVolume?: number;\n flags?: number;\n}\n\nexport interface AudioSampleEnvironmentDataBlock extends SimDataBlock {\n direct?: number;\n directHF?: number;\n room?: number;\n roomHF?: number;\n obstruction?: number;\n obstructionLFRatio?: number;\n occlusion?: number;\n occlusionLFRatio?: number;\n occlusionRoomRatio?: number;\n roomRolloff?: number;\n airAbsorption?: number;\n outsideVolumeHF?: number;\n flags?: number;\n}\n\n// ---------------------------------------------------------------------------\n// Misc / utility datablocks\n// ---------------------------------------------------------------------------\n\nexport interface DecalDataBlock extends SimDataBlock {\n sizeX?: number;\n sizeY?: number;\n textureName?: string;\n}\n\nexport interface CameraDataBlock extends ShapeBaseDataBlock {}\n\nexport interface SensorDataBlock extends SimDataBlock {}\n\nexport interface TriggerDataBlock extends SimDataBlock {\n tickPeriodMS?: number;\n}\n\nexport interface ForceFieldBareDataBlock extends SimDataBlock {\n fadeMS?: number;\n baseTranslucency?: number;\n powerOffTranslucency?: number;\n fadeInOnly?: boolean;\n triggerEnable?: boolean;\n color1?: Color4;\n color2?: Color4;\n framesPerSec?: number;\n numFrames?: number;\n scrollSpeed?: number;\n umapping?: number;\n vmapping?: number;\n texture0?: string;\n texture1?: string;\n texture2?: string;\n texture3?: string;\n texture4?: string;\n}\n\nexport interface ParticleEmissionDummyDataBlock extends SimDataBlock {\n timeMultiple?: number;\n}\n\nexport interface CommanderIconDataBlock extends SimDataBlock {\n baseImage?: string;\n activeImage?: string;\n inactiveImage?: string;\n selectImage?: string;\n hilightImage?: string;\n}\n\nexport interface PrecipitationDataBlock extends SimDataBlock {\n soundProfile?: number | null;\n numDrops?: number;\n maxSize?: number;\n materialList?: string;\n sizeX?: number;\n sizeY?: number;\n movingBoxPer?: number;\n divHeightVal?: number;\n sizeBigBox?: number;\n topBoxSpeed?: number;\n frontBoxSpeed?: number;\n topBoxDrawPer?: number;\n bottomDrawHeight?: number;\n skipIfPer?: number;\n bottomSpeedPer?: number;\n frontSpeedPer?: number;\n frontRadiusPer?: number;\n}\n\nexport interface FireballAtmosphereDataBlock extends SimDataBlock {\n emitter?: number | null;\n}\n\nexport interface LightningDataBlock extends SimDataBlock {\n strikeSounds?: (number | null)[];\n strikeTextures?: string[];\n thunderSound?: number | null;\n}\n\n// ---------------------------------------------------------------------------\n// Station effects\n// ---------------------------------------------------------------------------\n\nexport interface StationFXVehicleDataBlock extends SimDataBlock {\n glowTopHeight?: number;\n glowBottomHeight?: number;\n glowTopRadius?: number;\n glowBottomRadius?: number;\n numGlowSegments?: number;\n glowFadeTime?: number;\n armLightDelay?: number;\n armLightLifetime?: number;\n armLightFadeTime?: number;\n lifetime?: number;\n numArcSegments?: number;\n sphereColor?: Color4;\n spherePhiSegments?: number;\n sphereThetaSegments?: number;\n sphereRadius?: number;\n scale?: Vec3;\n glowNodeName?: string;\n leftNodeName0?: string;\n rightNodeName0?: string;\n leftNodeName1?: string;\n rightNodeName1?: string;\n leftNodeName2?: string;\n rightNodeName2?: string;\n leftNodeName3?: string;\n rightNodeName3?: string;\n texture0?: string;\n texture1?: string;\n}\n\nexport interface StationFXPersonalDataBlock extends SimDataBlock {\n glowTopRadius?: number;\n glowBottomRadius?: number;\n glowTopHeight?: number;\n glowBottomHeight?: number;\n numGlowSegments?: number;\n numGlowPanels?: number;\n topAlpha?: number;\n bottomAlpha?: number;\n glowSpeed?: number;\n scrollSpeed?: number;\n leftNodeName?: string;\n rightNodeName?: string;\n texture0?: string;\n texture1?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Miscellaneous game datablocks\n// ---------------------------------------------------------------------------\n\nexport interface CannedChatItemDataBlock extends SimDataBlock {\n chatText?: string;\n}\n\nexport interface MissionMarkerDataBlock extends ShapeBaseDataBlock {}\n\nexport interface TSShapeConstructorDataBlock extends SimDataBlock {\n shape?: string;\n sequences?: string[];\n}\n\nexport interface EffectProfileDataBlock extends SimDataBlock {\n minDistance?: number;\n maxDistance?: number;\n audioScale?: number;\n directional?: boolean;\n effectName?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Jet / running light effects\n// ---------------------------------------------------------------------------\n\nexport interface JetEffectDataBlock extends GameBaseDataBlock {\n coolColor?: Color4;\n hotColor?: Color4;\n activateTime?: number;\n deactivateTime?: number;\n length?: number;\n width?: number;\n speed?: number;\n stretch?: number;\n yOffset?: number;\n texture?: string;\n}\n\nexport interface RunningLightDataBlock extends GameBaseDataBlock {\n radius?: number;\n color?: Color4;\n type?: number;\n length?: number;\n nodeName?: string;\n direction?: Vec3;\n offset?: Vec3;\n texture?: string;\n}\n"]}
|