Merge pull request #951 from Azaezel/alpha403/clusterCleanups

inspector cleanups
This commit is contained in:
Brian Roberts 2023-01-30 17:33:29 -06:00 committed by GitHub
commit 6e35acf2a2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
391 changed files with 1402 additions and 968 deletions

View file

@ -24,6 +24,7 @@ Scene::~Scene()
void Scene::initPersistFields()
{
docsURL;
Parent::initPersistFields();
addGroup("Internal");

View file

@ -97,6 +97,7 @@ AccumulationVolume::~AccumulationVolume()
void AccumulationVolume::initPersistFields()
{
docsURL;
addProtectedField("textureAsset", TypeImageAssetId, Offset(mTextureAssetId, AccumulationVolume),
&_setTexture, &defaultProtectedGetFn, "Accumulation texture.");
addProtectedField( "texture", TypeStringFilename, Offset( mTextureName, AccumulationVolume ),

View file

@ -133,6 +133,7 @@ AIPlayer::~AIPlayer()
void AIPlayer::initPersistFields()
{
docsURL;
addGroup( "AI" );
addField( "mMoveTolerance", TypeF32, Offset( mMoveTolerance, AIPlayer ),

View file

@ -107,6 +107,7 @@ CppAsset::~CppAsset()
void CppAsset::initPersistFields()
{
docsURL;
// Call parent.
Parent::initPersistFields();

View file

@ -111,6 +111,7 @@ CubemapAsset::~CubemapAsset()
void CubemapAsset::initPersistFields()
{
docsURL;
// Call parent.
Parent::initPersistFields();

View file

@ -104,6 +104,7 @@ ExampleAsset::~ExampleAsset()
void ExampleAsset::initPersistFields()
{
docsURL;
// Call parent.
Parent::initPersistFields();

View file

@ -95,6 +95,7 @@ GUIAsset::~GUIAsset()
void GUIAsset::initPersistFields()
{
docsURL;
// Call parent.
Parent::initPersistFields();

View file

@ -109,6 +109,7 @@ GameObjectAsset::~GameObjectAsset()
void GameObjectAsset::initPersistFields()
{
docsURL;
// Call parent.
Parent::initPersistFields();

View file

@ -155,6 +155,7 @@ void ImageAsset::consoleInit()
void ImageAsset::initPersistFields()
{
docsURL;
// Call parent.
Parent::initPersistFields();

View file

@ -111,6 +111,7 @@ LevelAsset::~LevelAsset()
void LevelAsset::initPersistFields()
{
docsURL;
// Call parent.
Parent::initPersistFields();

View file

@ -150,6 +150,7 @@ void MaterialAsset::consoleInit()
void MaterialAsset::initPersistFields()
{
docsURL;
// Call parent.
Parent::initPersistFields();

View file

@ -106,6 +106,7 @@ ParticleAsset::~ParticleAsset()
void ParticleAsset::initPersistFields()
{
docsURL;
// Call parent.
Parent::initPersistFields();

View file

@ -111,6 +111,7 @@ PostEffectAsset::~PostEffectAsset()
void PostEffectAsset::initPersistFields()
{
docsURL;
// Call parent.
Parent::initPersistFields();

View file

@ -105,6 +105,7 @@ ScriptAsset::~ScriptAsset()
void ScriptAsset::initPersistFields()
{
docsURL;
// Call parent.
Parent::initPersistFields();

View file

@ -112,6 +112,7 @@ ShapeAnimationAsset::~ShapeAnimationAsset()
void ShapeAnimationAsset::initPersistFields()
{
docsURL;
// Call parent.
Parent::initPersistFields();

View file

@ -165,6 +165,7 @@ void ShapeAsset::consoleInit()
void ShapeAsset::initPersistFields()
{
docsURL;
// Call parent.
Parent::initPersistFields();

View file

@ -147,6 +147,7 @@ SoundAsset::~SoundAsset()
void SoundAsset::initPersistFields()
{
docsURL;
// Call parent.
Parent::initPersistFields();

View file

@ -134,6 +134,7 @@ TerrainAsset::~TerrainAsset()
void TerrainAsset::initPersistFields()
{
docsURL;
// Call parent.
Parent::initPersistFields();

View file

@ -153,6 +153,7 @@ void TerrainMaterialAsset::consoleInit()
void TerrainMaterialAsset::initPersistFields()
{
docsURL;
// Call parent.
Parent::initPersistFields();

View file

@ -134,6 +134,7 @@ void AssetImportConfig::onRemove()
/// Engine.
void AssetImportConfig::initPersistFields()
{
docsURL;
Parent::initPersistFields();
addGroup("General");
@ -466,6 +467,7 @@ void AssetImportObject::onRemove()
void AssetImportObject::initPersistFields()
{
docsURL;
Parent::initPersistFields();
addField("assetType", TypeRealString, Offset(assetType, AssetImportObject), "What type is the importing asset");
@ -539,6 +541,7 @@ void AssetImporter::onRemove()
void AssetImporter::initPersistFields()
{
docsURL;
Parent::initPersistFields();
addField("targetModuleId", TypeRealString, Offset(targetModuleId, AssetImporter), "The Id of the module the assets are to be imported into");

View file

@ -106,6 +106,7 @@ StateMachineAsset::~StateMachineAsset()
void StateMachineAsset::initPersistFields()
{
docsURL;
// Call parent.
Parent::initPersistFields();

View file

@ -85,6 +85,7 @@ ConsoleDocClass( CameraData,
void CameraData::initPersistFields()
{
docsURL;
Parent::initPersistFields();
}
@ -1307,6 +1308,7 @@ void Camera::unpackUpdate(NetConnection *con, BitStream *bstream)
void Camera::initPersistFields()
{
docsURL;
addGroup( "Camera" );
addProtectedField( "controlMode", TYPEID< CameraMotionMode >(), Offset( mMode, Camera ),
&_setModeField, &defaultProtectedGetFn,

View file

@ -309,6 +309,7 @@ ConvexShape::~ConvexShape()
void ConvexShape::initPersistFields()
{
docsURL;
addGroup( "Rendering" );
INITPERSISTFIELD_MATERIALASSET(Material, ConvexShape, "Default material used to render the ConvexShape surface.");

View file

@ -295,21 +295,23 @@ bool DebrisData::preload(bool server, String &errorStr)
void DebrisData::initPersistFields()
{
addGroup("Display");
addField("texture", TypeString, Offset(textureName, DebrisData),
"@brief Texture imagemap to use for this debris object.\n\nNot used any more.\n", AbstractClassRep::FIELD_HideInInspectors);
INITPERSISTFIELD_SHAPEASSET(Shape, DebrisData, "Shape to use for this debris object.");
endGroup("Display");
docsURL;
addGroup("Shapes");
addField("texture", TypeString, Offset(textureName, DebrisData),
"@brief Texture imagemap to use for this debris object.\n\nNot used any more.\n", AbstractClassRep::FIELD_HideInInspectors);
INITPERSISTFIELD_SHAPEASSET(Shape, DebrisData, "Shape to use for this debris object.");
endGroup("Shapes");
addGroup("Particle Effects");
addField("emitters", TYPEID< ParticleEmitterData >(), Offset(emitterList, DebrisData), DDC_NUM_EMITTERS,
"@brief List of particle emitters to spawn along with this debris object.\n\nThese are optional. You could have Debris made up of only a shape.\n");
addGroup("Particle Effects");
addGroup("Datablocks");
addField("emitters", TYPEID< ParticleEmitterData >(), Offset(emitterList, DebrisData), DDC_NUM_EMITTERS,
"@brief List of particle emitters to spawn along with this debris object.\n\nThese are optional. You could have Debris made up of only a shape.\n");
addField("explosion", TYPEID< ExplosionData >(), Offset(explosion, DebrisData),
"@brief ExplosionData to spawn along with this debris object.\n\nThis is optional as not all Debris explode.\n");
endGroup("Datablocks");
addGroup("Physical Properties");
addGroup("Physics");
addField("elasticity", TypeF32, Offset(elasticity, DebrisData),
"@brief A floating-point value specifying how 'bouncy' this object is.\n\nMust be in the range of -10 to 10.\n");
addField("friction", TypeF32, Offset(friction, DebrisData),
@ -338,7 +340,7 @@ void DebrisData::initPersistFields()
"@brief Use mass calculations based on radius.\n\nAllows for the adjustment of elasticity and friction based on the Debris size.\n@see baseRadius\n");
addField("baseRadius", TypeF32, Offset(baseRadius, DebrisData),
"@brief Radius at which the standard elasticity and friction apply.\n\nOnly used when useRaduisMass is true.\n@see useRadiusMass.\n");
endGroup("Physical Properties");
endGroup("Physics");
addGroup("Behavior");
addField("explodeOnMaxBounce", TypeBool, Offset(explodeOnMaxBounce, DebrisData),
@ -566,6 +568,7 @@ Debris::~Debris()
void Debris::initPersistFields()
{
docsURL;
addGroup( "Debris" );
addField( "lifetime", TypeF32, Offset(mLifetime, Debris),

View file

@ -138,6 +138,7 @@ void DecalData::onRemove()
void DecalData::initPersistFields()
{
docsURL;
addGroup( "Decal" );
addField( "size", TypeF32, Offset( size, DecalData ),

View file

@ -74,6 +74,7 @@ RenderMeshExample::~RenderMeshExample()
//-----------------------------------------------------------------------------
void RenderMeshExample::initPersistFields()
{
docsURL;
addGroup( "Rendering" );
INITPERSISTFIELD_MATERIALASSET(Material, RenderMeshExample, "The material used to render the mesh.");
endGroup( "Rendering" );

View file

@ -68,6 +68,7 @@ RenderObjectExample::~RenderObjectExample()
//-----------------------------------------------------------------------------
void RenderObjectExample::initPersistFields()
{
docsURL;
// SceneObject already handles exposing the transform
Parent::initPersistFields();
}
@ -277,4 +278,4 @@ void RenderObjectExample::render( ObjectRenderInst *ri, SceneRenderState *state,
// Draw our triangles
GFX->drawPrimitive( GFXTriangleList, 0, 12 );
}
}

View file

@ -72,12 +72,13 @@ RenderShapeExample::~RenderShapeExample()
//-----------------------------------------------------------------------------
void RenderShapeExample::initPersistFields()
{
addGroup( "Rendering" );
docsURL;
Parent::initPersistFields();
addGroup( "Shapes" );
INITPERSISTFIELD_SHAPEASSET(Shape, RenderShapeExample, "The path to the shape file.")
endGroup( "Rendering" );
endGroup( "Shapes" );
// SceneObject already handles exposing the transform
Parent::initPersistFields();
}
void RenderShapeExample::inspectPostApply()

View file

@ -97,6 +97,7 @@ GuiClockHud::GuiClockHud()
void GuiClockHud::initPersistFields()
{
docsURL;
addGroup("Misc");
addField( "showFill", TypeBool, Offset( mShowFill, GuiClockHud ), "If true, draws a background color behind the control.");
addField( "showFrame", TypeBool, Offset( mShowFrame, GuiClockHud ), "If true, draws a frame around the control." );

View file

@ -99,6 +99,7 @@ GuiCrossHairHud::GuiCrossHairHud()
void GuiCrossHairHud::initPersistFields()
{
docsURL;
addGroup("Damage");
addField( "damageFillColor", TypeColorF, Offset( mDamageFillColor, GuiCrossHairHud ), "As the health bar depletes, this color will represent the health loss amount." );
addField( "damageFrameColor", TypeColorF, Offset( mDamageFrameColor, GuiCrossHairHud ), "Color for the health bar's frame." );

View file

@ -112,6 +112,7 @@ GuiHealthBarHud::GuiHealthBarHud()
void GuiHealthBarHud::initPersistFields()
{
docsURL;
addGroup("Colors");
addField( "fillColor", TypeColorF, Offset( mFillColor, GuiHealthBarHud ), "Standard color for the background of the control." );
addField( "frameColor", TypeColorF, Offset( mFrameColor, GuiHealthBarHud ), "Color for the control's frame." );

View file

@ -115,7 +115,8 @@ GuiHealthTextHud::GuiHealthTextHud()
}
void GuiHealthTextHud::initPersistFields()
{
{
docsURL;
addGroup("Colors");
addField("fillColor", TypeColorF, Offset(mFillColor, GuiHealthTextHud), "Color for the background of the control.");
addField("frameColor", TypeColorF, Offset(mFrameColor, GuiHealthTextHud), "Color for the control's frame.");
@ -199,4 +200,4 @@ void GuiHealthTextHud::onRender(Point2I offset, const RectI &updateRect)
// If enabled draw the border last
if (mShowFrame)
drawUtil->drawRect(updateRect, mFrameColor.toColorI());
}
}

View file

@ -126,6 +126,7 @@ GuiShapeNameHud::GuiShapeNameHud()
void GuiShapeNameHud::initPersistFields()
{
docsURL;
addGroup("Colors");
addField( "fillColor", TypeColorF, Offset( mFillColor, GuiShapeNameHud ), "Standard color for the background of the control." );
addField( "frameColor", TypeColorF, Offset( mFrameColor, GuiShapeNameHud ), "Color for the control's frame." );

View file

@ -387,134 +387,148 @@ ExplosionData* ExplosionData::cloneAndPerformSubstitutions(const SimObject* owne
void ExplosionData::initPersistFields()
{
INITPERSISTFIELD_SHAPEASSET(ExplosionShape, ExplosionData, "@brief Optional shape asset to place at the center of the explosion.\n\n"
"The <i>ambient</i> animation of this model will be played automatically at the start of the explosion.");
docsURL;
addGroup("Shapes");
INITPERSISTFIELD_SHAPEASSET(ExplosionShape, ExplosionData, "@brief Optional shape asset to place at the center of the explosion.\n\n"
"The <i>ambient</i> animation of this model will be played automatically at the start of the explosion.");
endGroup("Shapes");
addField( "explosionScale", TypePoint3F, Offset(explosionScale, ExplosionData),
addGroup("Sounds");
INITPERSISTFIELD_SOUNDASSET(Sound, ExplosionData, "Sound to play when this explosion explodes.");
endGroup("Sounds");
addGroup("Particle Effects");
addField( "faceViewer", TypeBool, Offset(faceViewer, ExplosionData),
"Controls whether the visual effects of the explosion always face the camera." );
addField( "particleEmitter", TYPEID< ParticleEmitterData >(), Offset(particleEmitter, ExplosionData),
"@brief Emitter used to generate a cloud of particles at the start of the explosion.\n\n"
"Explosions can generate two different particle effects. The first is a "
"single burst of particles at the start of the explosion emitted in a "
"spherical cloud using particleEmitter.\n\n"
"The second effect spawns the list of ParticleEmitters given by the emitter[] "
"field. These emitters generate particles in the normal way throughout the "
"lifetime of the explosion." );
addField( "particleDensity", TypeS32, Offset(particleDensity, ExplosionData),
"@brief Density of the particle cloud created at the start of the explosion.\n\n"
"@see particleEmitter" );
addField( "particleRadius", TypeF32, Offset(particleRadius, ExplosionData),
"@brief Radial distance from the explosion center at which cloud particles "
"are emitted.\n\n"
"@see particleEmitter" );
addField( "emitter", TYPEID< ParticleEmitterData >(), Offset(emitterList, ExplosionData), EC_NUM_EMITTERS,
"@brief List of additional ParticleEmitterData objects to spawn with this "
"explosion.\n\n"
"@see particleEmitter" );
endGroup("Particle Effects");
addGroup("Debris");
addField( "debris", TYPEID< DebrisData >(), Offset(debrisList, ExplosionData), EC_NUM_DEBRIS_TYPES,
"List of DebrisData objects to spawn with this explosion." );
addField( "debrisThetaMin", TypeF32, Offset(debrisThetaMin, ExplosionData),
"Minimum angle, from the horizontal plane, to eject debris from." );
addField( "debrisThetaMax", TypeF32, Offset(debrisThetaMax, ExplosionData),
"Maximum angle, from the horizontal plane, to eject debris from." );
addField( "debrisPhiMin", TypeF32, Offset(debrisPhiMin, ExplosionData),
"Minimum reference angle, from the vertical plane, to eject debris from." );
addField( "debrisPhiMax", TypeF32, Offset(debrisPhiMax, ExplosionData),
"Maximum reference angle, from the vertical plane, to eject debris from." );
addField( "debrisNum", TypeS32, Offset(debrisNum, ExplosionData),
"Number of debris objects to create." );
addField( "debrisNumVariance", TypeS32, Offset(debrisNumVariance, ExplosionData),
"Variance in the number of debris objects to create (must be from 0 - debrisNum)." );
addField( "debrisVelocity", TypeF32, Offset(debrisVelocity, ExplosionData),
"Velocity to toss debris at." );
addField( "debrisVelocityVariance", TypeF32, Offset(debrisVelocityVariance, ExplosionData),
"Variance in the debris initial velocity (must be >= 0)." );
addField( "subExplosion", TYPEID< ExplosionData >(), Offset(explosionList, ExplosionData), EC_MAX_SUB_EXPLOSIONS,
"List of additional ExplosionData objects to create at the start of the explosion." );
endGroup("Debris");
addGroup("Animation");
addField("explosionScale", TypePoint3F, Offset(explosionScale, ExplosionData),
"\"X Y Z\" scale factor applied to the explosionShape model at the start "
"of the explosion." );
addField( "playSpeed", TypeF32, Offset(playSpeed, ExplosionData),
"Time scale at which to play the explosionShape <i>ambient</i> sequence." );
"of the explosion.");
addField("playSpeed", TypeF32, Offset(playSpeed, ExplosionData),
"Time scale at which to play the explosionShape <i>ambient</i> sequence.");
INITPERSISTFIELD_SOUNDASSET(Sound, ExplosionData, "Sound to play when this explosion explodes.");
addField( "delayMS", TypeS32, Offset(delayMS, ExplosionData),
"Amount of time, in milliseconds, to delay the start of the explosion effect "
"from the creation of the Explosion object." );
addField( "delayVariance", TypeS32, Offset(delayVariance, ExplosionData),
"Variance, in milliseconds, of delayMS." );
addField( "lifetimeMS", TypeS32, Offset(lifetimeMS, ExplosionData),
"@brief Lifetime, in milliseconds, of the Explosion object.\n\n"
"@note If explosionShape is defined and contains an <i>ambient</i> animation, "
"this field is ignored, and the playSpeed scaled duration of the animation "
"is used instead." );
addField( "lifetimeVariance", TypeS32, Offset(lifetimeVariance, ExplosionData),
"Variance, in milliseconds, of the lifetimeMS of the Explosion object.\n" );
addField( "offset", TypeF32, Offset(offset, ExplosionData),
"@brief Offset distance (in a random direction) of the center of the explosion "
"from the Explosion object position.\n\n"
"Most often used to create some variance in position for subExplosion effects." );
addField( "faceViewer", TypeBool, Offset(faceViewer, ExplosionData),
"Controls whether the visual effects of the explosion always face the camera." );
addField( "times", TypeF32, Offset(times, ExplosionData), EC_NUM_TIME_KEYS,
"@brief Time keyframes used to scale the explosionShape model.\n\n"
"Values should be in increasing order from 0.0 - 1.0, and correspond to "
"the life of the Explosion where 0 is the beginning and 1 is the end of "
"the explosion lifetime.\n"
"@see lifetimeMS" );
addField( "sizes", TypePoint3F, Offset(sizes, ExplosionData), EC_NUM_TIME_KEYS,
"@brief \"X Y Z\" size keyframes used to scale the explosionShape model.\n\n"
"The explosionShape (if defined) will be scaled using the times/sizes "
"keyframes over the lifetime of the explosion.\n"
"@see lifetimeMS" );
endGroup("Animation");
addField( "particleEmitter", TYPEID< ParticleEmitterData >(), Offset(particleEmitter, ExplosionData),
"@brief Emitter used to generate a cloud of particles at the start of the explosion.\n\n"
"Explosions can generate two different particle effects. The first is a "
"single burst of particles at the start of the explosion emitted in a "
"spherical cloud using particleEmitter.\n\n"
"The second effect spawns the list of ParticleEmitters given by the emitter[] "
"field. These emitters generate particles in the normal way throughout the "
"lifetime of the explosion." );
addField( "particleDensity", TypeS32, Offset(particleDensity, ExplosionData),
"@brief Density of the particle cloud created at the start of the explosion.\n\n"
"@see particleEmitter" );
addField( "particleRadius", TypeF32, Offset(particleRadius, ExplosionData),
"@brief Radial distance from the explosion center at which cloud particles "
"are emitted.\n\n"
"@see particleEmitter" );
addField( "emitter", TYPEID< ParticleEmitterData >(), Offset(emitterList, ExplosionData), EC_NUM_EMITTERS,
"@brief List of additional ParticleEmitterData objects to spawn with this "
"explosion.\n\n"
"@see particleEmitter" );
addGroup("Camera Shake");
addField( "shakeCamera", TypeBool, Offset(shakeCamera, ExplosionData),
"Controls whether the camera shakes during this explosion." );
addField( "camShakeFreq", TypePoint3F, Offset(camShakeFreq, ExplosionData),
"Frequency of camera shaking, defined in the \"X Y Z\" axes." );
addField( "camShakeAmp", TypePoint3F, Offset(camShakeAmp, ExplosionData),
"@brief Amplitude of camera shaking, defined in the \"X Y Z\" axes.\n\n"
"Set any value to 0 to disable shaking in that axis." );
addField( "camShakeDuration", TypeF32, Offset(camShakeDuration, ExplosionData),
"Duration (in seconds) to shake the camera." );
addField( "camShakeRadius", TypeF32, Offset(camShakeRadius, ExplosionData),
"Radial distance that a camera's position must be within relative to the "
"center of the explosion to be shaken." );
addField( "camShakeFalloff", TypeF32, Offset(camShakeFalloff, ExplosionData),
"Falloff value for the camera shake." );
endGroup("Camera Shake");
addField( "debris", TYPEID< DebrisData >(), Offset(debrisList, ExplosionData), EC_NUM_DEBRIS_TYPES,
"List of DebrisData objects to spawn with this explosion." );
addField( "debrisThetaMin", TypeF32, Offset(debrisThetaMin, ExplosionData),
"Minimum angle, from the horizontal plane, to eject debris from." );
addField( "debrisThetaMax", TypeF32, Offset(debrisThetaMax, ExplosionData),
"Maximum angle, from the horizontal plane, to eject debris from." );
addField( "debrisPhiMin", TypeF32, Offset(debrisPhiMin, ExplosionData),
"Minimum reference angle, from the vertical plane, to eject debris from." );
addField( "debrisPhiMax", TypeF32, Offset(debrisPhiMax, ExplosionData),
"Maximum reference angle, from the vertical plane, to eject debris from." );
addField( "debrisNum", TypeS32, Offset(debrisNum, ExplosionData),
"Number of debris objects to create." );
addField( "debrisNumVariance", TypeS32, Offset(debrisNumVariance, ExplosionData),
"Variance in the number of debris objects to create (must be from 0 - debrisNum)." );
addField( "debrisVelocity", TypeF32, Offset(debrisVelocity, ExplosionData),
"Velocity to toss debris at." );
addField( "debrisVelocityVariance", TypeF32, Offset(debrisVelocityVariance, ExplosionData),
"Variance in the debris initial velocity (must be >= 0)." );
addField( "subExplosion", TYPEID< ExplosionData >(), Offset(explosionList, ExplosionData), EC_MAX_SUB_EXPLOSIONS,
"List of additional ExplosionData objects to create at the start of the "
"explosion." );
addField( "delayMS", TypeS32, Offset(delayMS, ExplosionData),
"Amount of time, in milliseconds, to delay the start of the explosion effect "
"from the creation of the Explosion object." );
addField( "delayVariance", TypeS32, Offset(delayVariance, ExplosionData),
"Variance, in milliseconds, of delayMS." );
addField( "lifetimeMS", TypeS32, Offset(lifetimeMS, ExplosionData),
"@brief Lifetime, in milliseconds, of the Explosion object.\n\n"
"@note If explosionShape is defined and contains an <i>ambient</i> animation, "
"this field is ignored, and the playSpeed scaled duration of the animation "
"is used instead." );
addField( "lifetimeVariance", TypeS32, Offset(lifetimeVariance, ExplosionData),
"Variance, in milliseconds, of the lifetimeMS of the Explosion object.\n" );
addField( "offset", TypeF32, Offset(offset, ExplosionData),
"@brief Offset distance (in a random direction) of the center of the explosion "
"from the Explosion object position.\n\n"
"Most often used to create some variance in position for subExplosion effects." );
addField( "times", TypeF32, Offset(times, ExplosionData), EC_NUM_TIME_KEYS,
"@brief Time keyframes used to scale the explosionShape model.\n\n"
"Values should be in increasing order from 0.0 - 1.0, and correspond to "
"the life of the Explosion where 0 is the beginning and 1 is the end of "
"the explosion lifetime.\n"
"@see lifetimeMS" );
addField( "sizes", TypePoint3F, Offset(sizes, ExplosionData), EC_NUM_TIME_KEYS,
"@brief \"X Y Z\" size keyframes used to scale the explosionShape model.\n\n"
"The explosionShape (if defined) will be scaled using the times/sizes "
"keyframes over the lifetime of the explosion.\n"
"@see lifetimeMS" );
addField( "shakeCamera", TypeBool, Offset(shakeCamera, ExplosionData),
"Controls whether the camera shakes during this explosion." );
addField( "camShakeFreq", TypePoint3F, Offset(camShakeFreq, ExplosionData),
"Frequency of camera shaking, defined in the \"X Y Z\" axes." );
addField( "camShakeAmp", TypePoint3F, Offset(camShakeAmp, ExplosionData),
"@brief Amplitude of camera shaking, defined in the \"X Y Z\" axes.\n\n"
"Set any value to 0 to disable shaking in that axis." );
addField( "camShakeDuration", TypeF32, Offset(camShakeDuration, ExplosionData),
"Duration (in seconds) to shake the camera." );
addField( "camShakeRadius", TypeF32, Offset(camShakeRadius, ExplosionData),
"Radial distance that a camera's position must be within relative to the "
"center of the explosion to be shaken." );
addField( "camShakeFalloff", TypeF32, Offset(camShakeFalloff, ExplosionData),
"Falloff value for the camera shake." );
addField( "lightStartRadius", TypeF32, Offset(lightStartRadius, ExplosionData),
"@brief Initial radius of the PointLight created by this explosion.\n\n"
"Radius is linearly interpolated from lightStartRadius to lightEndRadius "
"over the lifetime of the explosion.\n"
"@see lifetimeMS" );
addField( "lightEndRadius", TypeF32, Offset(lightEndRadius, ExplosionData),
"@brief Final radius of the PointLight created by this explosion.\n\n"
"@see lightStartRadius" );
addField( "lightStartColor", TypeColorF, Offset(lightStartColor, ExplosionData),
"@brief Initial color of the PointLight created by this explosion.\n\n"
"Color is linearly interpolated from lightStartColor to lightEndColor "
"over the lifetime of the explosion.\n"
"@see lifetimeMS" );
addField( "lightEndColor", TypeColorF, Offset(lightEndColor, ExplosionData),
"@brief Final color of the PointLight created by this explosion.\n\n"
"@see lightStartColor" );
addField( "lightStartBrightness", TypeF32, Offset(lightStartBrightness, ExplosionData),
"@brief Initial brightness of the PointLight created by this explosion.\n\n"
"Brightness is linearly interpolated from lightStartBrightness to "
"lightEndBrightness over the lifetime of the explosion.\n"
"@see lifetimeMS" );
addField("lightEndBrightness", TypeF32, Offset(lightEndBrightness, ExplosionData),
"@brief Final brightness of the PointLight created by this explosion.\n\n"
"@see lightStartBrightness" );
addField( "lightNormalOffset", TypeF32, Offset(lightNormalOffset, ExplosionData),
"Distance (in the explosion normal direction) of the PointLight position "
"from the explosion center." );
addGroup("Light Emitter");
addField( "lightStartRadius", TypeF32, Offset(lightStartRadius, ExplosionData),
"@brief Initial radius of the PointLight created by this explosion.\n\n"
"Radius is linearly interpolated from lightStartRadius to lightEndRadius "
"over the lifetime of the explosion.\n"
"@see lifetimeMS" );
addField( "lightEndRadius", TypeF32, Offset(lightEndRadius, ExplosionData),
"@brief Final radius of the PointLight created by this explosion.\n\n"
"@see lightStartRadius" );
addField( "lightStartColor", TypeColorF, Offset(lightStartColor, ExplosionData),
"@brief Initial color of the PointLight created by this explosion.\n\n"
"Color is linearly interpolated from lightStartColor to lightEndColor "
"over the lifetime of the explosion.\n"
"@see lifetimeMS" );
addField( "lightEndColor", TypeColorF, Offset(lightEndColor, ExplosionData),
"@brief Final color of the PointLight created by this explosion.\n\n"
"@see lightStartColor" );
addField( "lightStartBrightness", TypeF32, Offset(lightStartBrightness, ExplosionData),
"@brief Initial brightness of the PointLight created by this explosion.\n\n"
"Brightness is linearly interpolated from lightStartBrightness to "
"lightEndBrightness over the lifetime of the explosion.\n"
"@see lifetimeMS" );
addField("lightEndBrightness", TypeF32, Offset(lightEndBrightness, ExplosionData),
"@brief Final brightness of the PointLight created by this explosion.\n\n"
"@see lightStartBrightness" );
addField( "lightNormalOffset", TypeF32, Offset(lightNormalOffset, ExplosionData),
"Distance (in the explosion normal direction) of the PointLight position "
"from the explosion center." );
endGroup("Light Emitter");
// disallow some field substitutions
onlyKeepClearSubstitutions("debris"); // subs resolving to "~~", or "~0" are OK
@ -967,6 +981,7 @@ void Explosion::setInitialState(const Point3F& point, const Point3F& normal, con
//--------------------------------------------------------------------------
void Explosion::initPersistFields()
{
docsURL;
Parent::initPersistFields();
addField("initialNormal", TypePoint3F, Offset(mInitialNormal, Explosion), "Initial starting Normal.");
//

View file

@ -345,6 +345,7 @@ fxFoliageReplicator::~fxFoliageReplicator()
void fxFoliageReplicator::initPersistFields()
{
docsURL;
// Add out own persistent fields.
addGroup( "Debugging" ); // MM: Added Group Header.
addField( "UseDebugInfo", TypeBool, Offset( mFieldData.mUseDebugInfo, fxFoliageReplicator ), "Culling bins are drawn when set to true." );

View file

@ -139,6 +139,7 @@ fxShapeReplicator::~fxShapeReplicator()
void fxShapeReplicator::initPersistFields()
{
docsURL;
// Add out own persistent fields.
addGroup( "Debugging" ); // MM: Added Group Header.
addField( "HideReplications", TypeBool, Offset( mFieldData.mHideReplications, fxShapeReplicator ), "Replicated shapes are hidden when set to true." );

View file

@ -540,6 +540,7 @@ IMPLEMENT_CO_NETOBJECT_V1(GroundCover);
void GroundCover::initPersistFields()
{
docsURL;
addGroup( "GroundCover General" );
INITPERSISTFIELD_MATERIALASSET(Material, GroundCover, "Material used by all GroundCover segments.");

View file

@ -262,6 +262,7 @@ LightningData::~LightningData()
//--------------------------------------------------------------------------
void LightningData::initPersistFields()
{
docsURL;
INITPERSISTFIELD_SOUNDASSET(StrikeSound, LightningData, "Sound to play when lightning STRIKES!");
@ -411,6 +412,7 @@ Lightning::~Lightning()
//--------------------------------------------------------------------------
void Lightning::initPersistFields()
{
docsURL;
addGroup( "Strikes" );
addField( "strikesPerMinute", TypeS32, Offset(strikesPerMinute, Lightning),
"@brief Number of lightning strikes to perform per minute.\n\n"

View file

@ -147,6 +147,7 @@ FRangeValidator spinRandFValidator(-1000.f, 1000.f);
//-----------------------------------------------------------------------------
void ParticleData::initPersistFields()
{
docsURL;
addFieldV( "dragCoefficient", TYPEID< F32 >(), Offset(dragCoefficient, ParticleData), &dragCoefFValidator,
"Particle physics drag amount." );
addField( "windCoefficient", TYPEID< F32 >(), Offset(windCoefficient, ParticleData),

View file

@ -207,6 +207,7 @@ FRangeValidator phiFValidator(0.f, 360.f);
//-----------------------------------------------------------------------------
void ParticleEmitterData::initPersistFields()
{
docsURL;
addGroup( "ParticleEmitterData" );
addFieldV("ejectionPeriodMS", TYPEID< S32 >(), Offset(ejectionPeriodMS, ParticleEmitterData), &ejectPeriodIValidator,

View file

@ -89,6 +89,7 @@ ParticleEmitterNodeData::~ParticleEmitterNodeData()
//-----------------------------------------------------------------------------
void ParticleEmitterNodeData::initPersistFields()
{
docsURL;
addField( "timeMultiple", TYPEID< F32 >(), Offset(timeMultiple, ParticleEmitterNodeData),
"@brief Time multiplier for particle emitter nodes.\n\n"
"Increasing timeMultiple is like running the emitter at a faster rate - single-shot "
@ -181,6 +182,7 @@ ParticleEmitterNode::~ParticleEmitterNode()
//-----------------------------------------------------------------------------
void ParticleEmitterNode::initPersistFields()
{
docsURL;
addField( "active", TYPEID< bool >(), Offset(mActive,ParticleEmitterNode),
"Controls whether particles are emitted from this node." );
addField( "emitter", TYPEID< ParticleEmitterData >(), Offset(mEmitterDatablock, ParticleEmitterNode),

View file

@ -143,6 +143,7 @@ PrecipitationData::PrecipitationData()
void PrecipitationData::initPersistFields()
{
docsURL;
INITPERSISTFIELD_SOUNDASSET(Sound, PrecipitationData, "Looping SFXProfile effect to play while Precipitation is active.");
addProtectedField( "dropTexture", TypeFilename, Offset(mDropName, PrecipitationData), &_setDropData, &defaultProtectedGetFn,
@ -367,6 +368,7 @@ IRangeValidator ValidNumDropsRange(1, 100000);
void Precipitation::initPersistFields()
{
docsURL;
addGroup("Precipitation");
addFieldV( "numDrops", TypeS32, Offset(mNumDrops, Precipitation), &ValidNumDropsRange,

View file

@ -68,6 +68,7 @@ RibbonData::RibbonData()
void RibbonData::initPersistFields()
{
docsURL;
Parent::initPersistFields();
addGroup("Ribbon");
@ -205,6 +206,7 @@ Ribbon::~Ribbon()
//--------------------------------------------------------------------------
void Ribbon::initPersistFields()
{
docsURL;
Parent::initPersistFields();
}

View file

@ -56,6 +56,7 @@ RibbonNodeData::~RibbonNodeData()
//-----------------------------------------------------------------------------
void RibbonNodeData::initPersistFields()
{
docsURL;
Parent::initPersistFields();
}
@ -90,6 +91,7 @@ RibbonNode::~RibbonNode()
//-----------------------------------------------------------------------------
void RibbonNode::initPersistFields()
{
docsURL;
addField( "active", TYPEID< bool >(), Offset(mActive,RibbonNode),
"Controls whether ribbon is emitted from this node." );
addField( "ribbon", TYPEID< RibbonData >(), Offset(mRibbonDatablock, RibbonNode),

View file

@ -114,8 +114,9 @@ SplashData::SplashData()
//--------------------------------------------------------------------------
// Init fields
//--------------------------------------------------------------------------
void SplashData::initPersistFields()
void SplashData::initPersistFields()
{
docsURL;
INITPERSISTFIELD_SOUNDASSET(Sound, SplashData, "Sound to play when splash, splashes.");
addField("scale", TypePoint3F, Offset(scale, SplashData), "The scale of this splashing effect, defined as the F32 points X, Y, Z.\n");

View file

@ -156,6 +156,7 @@ bool GameBaseData::onAdd()
void GameBaseData::initPersistFields()
{
docsURL;
addGroup("Scripting");
addField( "category", TypeCaseString, Offset(mCategory, GameBaseData ),
@ -721,6 +722,7 @@ DefineEngineMethod( GameBase, setDataBlock, bool, ( GameBaseData* data ),,
void GameBase::initPersistFields()
{
docsURL;
addGroup( "Game" );
addProtectedField( "dataBlock", TYPEID< GameBaseData >(), Offset(mDataBlock, GameBase),

View file

@ -103,6 +103,7 @@ GroundPlane::~GroundPlane()
void GroundPlane::initPersistFields()
{
docsURL;
addGroup( "Plane" );
addField( "squareSize", TypeF32, Offset( mSquareSize, GroundPlane ), "Square size in meters to which %GroundPlane subdivides its geometry." );

View file

@ -135,6 +135,7 @@ GuiObjectView::~GuiObjectView()
void GuiObjectView::initPersistFields()
{
docsURL;
addGroup( "Model" );
addField( "shapeFile", TypeStringFilename, Offset( mModelName, GuiObjectView ),

View file

@ -88,7 +88,6 @@ ConsoleDocClass( ItemData,
" density = 2;\n"
" drag = 0.5;\n"
" maxVelocity = \"10.0\";\n"
" emap = true;\n"
" sticky = false;\n"
" dynamicType = \"0\"\n;"
" lightOnlyStatic = false;\n"
@ -109,9 +108,6 @@ ConsoleDocClass( ItemData,
ItemData::ItemData()
{
shadowEnable = true;
friction = 0;
elasticity = 0;
@ -141,40 +137,43 @@ EndImplementEnumType;
void ItemData::initPersistFields()
{
addField("friction", TypeF32, Offset(friction, ItemData), "A floating-point value specifying how much velocity is lost to impact and sliding friction.");
addField("elasticity", TypeF32, Offset(elasticity, ItemData), "A floating-point value specifying how 'bouncy' this ItemData is.");
addField("sticky", TypeBool, Offset(sticky, ItemData),
"@brief If true, ItemData will 'stick' to any surface it collides with.\n\n"
"When an item does stick to a surface, the Item::onStickyCollision() callback is called. The Item has methods to retrieve "
"the world position and normal the Item is stuck to.\n"
"@note Valid objects to stick to must be of StaticShapeObjectType.\n");
addField("gravityMod", TypeF32, Offset(gravityMod, ItemData), "Floating point value to multiply the existing gravity with, just for this ItemData.");
addField("maxVelocity", TypeF32, Offset(maxVelocity, ItemData), "Maximum velocity that this ItemData is able to move.");
addField("lightType", TYPEID< Item::LightType >(), Offset(lightType, ItemData), "Type of light to apply to this ItemData. Options are NoLight, ConstantLight, PulsingLight. Default is NoLight." );
addField("lightColor", TypeColorF, Offset(lightColor, ItemData),
"@brief Color value to make this light. Example: \"1.0,1.0,1.0\"\n\n"
"@see lightType\n");
addField("lightTime", TypeS32, Offset(lightTime, ItemData),
"@brief Time value for the light of this ItemData, used to control the pulse speed of the PulsingLight LightType.\n\n"
"@see lightType\n");
addField("lightRadius", TypeF32, Offset(lightRadius, ItemData),
"@brief Distance from the center point of this ItemData for the light to affect\n\n"
"@see lightType\n");
addField("lightOnlyStatic", TypeBool, Offset(lightOnlyStatic, ItemData),
"@brief If true, this ItemData will only cast a light if the Item for this ItemData has a static value of true.\n\n"
"@see lightType\n");
addField("simpleServerCollision", TypeBool, Offset(simpleServerCollision, ItemData),
"@brief Determines if only simple server-side collision will be used (for pick ups).\n\n"
"If set to true then only simple, server-side collision detection will be used. This is often the case "
"if the item is used for a pick up object, such as ammo. If set to false then a full collision volume "
"will be used as defined by the shape. The default is true.\n"
"@note Only applies when using a physics library.\n"
"@see TurretShape and ProximityMine for examples that should set this to false to allow them to be "
"shot by projectiles.\n");
docsURL;
Parent::initPersistFields();
addGroup("Physics");
addField("friction", TypeF32, Offset(friction, ItemData), "A floating-point value specifying how much velocity is lost to impact and sliding friction.");
addField("elasticity", TypeF32, Offset(elasticity, ItemData), "A floating-point value specifying how 'bouncy' this ItemData is.");
addField("sticky", TypeBool, Offset(sticky, ItemData),
"@brief If true, ItemData will 'stick' to any surface it collides with.\n\n"
"When an item does stick to a surface, the Item::onStickyCollision() callback is called. The Item has methods to retrieve "
"the world position and normal the Item is stuck to.\n"
"@note Valid objects to stick to must be of StaticShapeObjectType.\n");
addField("gravityMod", TypeF32, Offset(gravityMod, ItemData), "Floating point value to multiply the existing gravity with, just for this ItemData.");
addField("maxVelocity", TypeF32, Offset(maxVelocity, ItemData), "Maximum velocity that this ItemData is able to move.");
addField("simpleServerCollision", TypeBool, Offset(simpleServerCollision, ItemData),
"@brief Determines if only simple server-side collision will be used (for pick ups).\n\n"
"If set to true then only simple, server-side collision detection will be used. This is often the case "
"if the item is used for a pick up object, such as ammo. If set to false then a full collision volume "
"will be used as defined by the shape. The default is true.\n"
"@note Only applies when using a physics library.\n"
"@see TurretShape and ProximityMine for examples that should set this to false to allow them to be "
"shot by projectiles.\n");
endGroup("Physics");
addGroup("Light Emitter");
addField("lightType", TYPEID< Item::LightType >(), Offset(lightType, ItemData), "Type of light to apply to this ItemData. Options are NoLight, ConstantLight, PulsingLight. Default is NoLight." );
addField("lightColor", TypeColorF, Offset(lightColor, ItemData),
"@brief Color value to make this light. Example: \"1.0,1.0,1.0\"\n\n"
"@see lightType\n");
addField("lightTime", TypeS32, Offset(lightTime, ItemData),
"@brief Time value for the light of this ItemData, used to control the pulse speed of the PulsingLight LightType.\n\n"
"@see lightType\n");
addField("lightRadius", TypeF32, Offset(lightRadius, ItemData),
"@brief Distance from the center point of this ItemData for the light to affect\n\n"
"@see lightType\n");
addField("lightOnlyStatic", TypeBool, Offset(lightOnlyStatic, ItemData),
"@brief If true, this ItemData will only cast a light if the Item for this ItemData has a static value of true.\n\n"
"@see lightType\n");
endGroup("Light Emitter");
}
void ItemData::packData(BitStream* stream)
@ -262,7 +261,6 @@ ConsoleDocClass( Item,
" mass = 2;\n"
" friction = 1;\n"
" elasticity = 0.3;\n"
" emap = true;\n\n"
" // Dynamic properties used by the scripts\n"
" pickupName = \"a health patch\";\n"
" repairAmount = 50;\n"
@ -1304,6 +1302,7 @@ bool Item::_setRotate(void *object, const char *index, const char *data)
void Item::initPersistFields()
{
docsURL;
addGroup("Misc");
addProtectedField("static", TypeBool, Offset(mStatic, Item), &_setStatic, &defaultProtectedGetFn, "If true, the object is not moving in the world.\n");
addProtectedField("rotate", TypeBool, Offset(mRotate, Item), &_setRotate, &defaultProtectedGetFn, "If true, the object will automatically rotate around its Z axis.\n");

View file

@ -127,6 +127,7 @@ FRangeValidator ValiDampnessRange(0.0f, 1.0f);
void LevelInfo::initPersistFields()
{
docsURL;
addGroup( "Visibility" );
addField( "nearClip", TypeF32, Offset( mNearClip, LevelInfo ), "Closest distance from the camera's position to render the world." );

View file

@ -62,6 +62,7 @@ ConsoleDocClass( LightAnimData,
void LightAnimData::initPersistFields()
{
docsURL;
addGroup( "Offset",
"The XYZ translation animation state relative to the light position." );

View file

@ -88,6 +88,7 @@ LightBase::~LightBase()
void LightBase::initPersistFields()
{
docsURL;
// We only add the basic lighting options that all lighting
// systems would use... the specific lighting system options
// are injected at runtime by the lighting system itself.

View file

@ -90,6 +90,7 @@ ConsoleDocClass( LightDescription,
void LightDescription::initPersistFields()
{
docsURL;
addGroup( "Light" );
addField( "color", TypeColorF, Offset( color, LightDescription ), "Changes the base color hue of the light." );

View file

@ -142,6 +142,7 @@ LightFlareData::~LightFlareData()
void LightFlareData::initPersistFields()
{
docsURL;
addGroup( "LightFlareData" );
addField( "overallScale", TypeF32, Offset( mScale, LightFlareData ),

View file

@ -90,6 +90,7 @@ BoxEnvironmentProbe::~BoxEnvironmentProbe()
//-----------------------------------------------------------------------------
void BoxEnvironmentProbe::initPersistFields()
{
docsURL;
// SceneObject already handles exposing the transform
Parent::initPersistFields();

View file

@ -151,6 +151,7 @@ ReflectionProbe::~ReflectionProbe()
//-----------------------------------------------------------------------------
void ReflectionProbe::initPersistFields()
{
docsURL;
addField("canDamp", TypeBool, Offset(mCanDamp, ReflectionProbe),"wetness allowed");
addGroup("Rendering");
addProtectedField("enabled", TypeBool, Offset(mEnabled, ReflectionProbe),

View file

@ -90,6 +90,7 @@ Skylight::~Skylight()
//-----------------------------------------------------------------------------
void Skylight::initPersistFields()
{
docsURL;
// SceneObject already handles exposing the transform
Parent::initPersistFields();

View file

@ -89,6 +89,7 @@ SphereEnvironmentProbe::~SphereEnvironmentProbe()
//-----------------------------------------------------------------------------
void SphereEnvironmentProbe::initPersistFields()
{
docsURL;
// SceneObject already handles exposing the transform
Parent::initPersistFields();

View file

@ -130,6 +130,7 @@ void MissionArea::inspectPostApply()
void MissionArea::initPersistFields()
{
docsURL;
addGroup("Dimensions");
addField("area", TypeRectI, Offset(mArea, MissionArea), "Four corners (X1, X2, Y1, Y2) that makes up the level's boundaries");
addField("flightCeiling", TypeF32, Offset(mFlightCeiling, MissionArea), "Represents the top of the mission area, used by FlyingVehicle. ");
@ -215,4 +216,4 @@ DefineEngineMethod( MissionArea, postApply, void, (),,
)
{
object->inspectPostApply();
}
}

View file

@ -179,7 +179,9 @@ void MissionMarker::unpackUpdate(NetConnection * con, BitStream * stream)
}
}
void MissionMarker::initPersistFields() {
void MissionMarker::initPersistFields()
{
docsURL;
Parent::initPersistFields();
}
@ -281,6 +283,7 @@ void WayPoint::unpackUpdate(NetConnection * con, BitStream * stream)
void WayPoint::initPersistFields()
{
docsURL;
addGroup("Misc");
addField("markerName", TypeCaseString, Offset(mName, WayPoint), "Unique name representing this waypoint");
endGroup("Misc");
@ -468,6 +471,7 @@ void SpawnSphere::advanceTime( F32 timeDelta )
void SpawnSphere::initPersistFields()
{
docsURL;
addGroup( "Spawn" );
addField( "spawnClass", TypeRealString, Offset(mSpawnClass, SpawnSphere),
"Object class to create (eg. Player, AIPlayer, Debris etc)" );
@ -611,6 +615,7 @@ void CameraBookmark::unpackUpdate(NetConnection * con, BitStream * stream)
void CameraBookmark::initPersistFields()
{
docsURL;
//addGroup("Misc");
//addField("name", TypeCaseString, Offset(mName, CameraBookmark));
//endGroup("Misc");

View file

@ -40,6 +40,7 @@ NotesObject::~NotesObject()
//-----------------------------------------------------------------------------
void NotesObject::initPersistFields()
{
docsURL;
Parent::initPersistFields();
addField("Note", TypeCommand, Offset(mNote, NotesObject), "");

View file

@ -61,6 +61,7 @@ void PathCameraData::consoleInit()
void PathCameraData::initPersistFields()
{
docsURL;
Parent::initPersistFields();
}
@ -201,6 +202,7 @@ void PathCamera::onEditorDisable()
void PathCamera::initPersistFields()
{
docsURL;
Parent::initPersistFields();
}
@ -637,4 +639,4 @@ DefineEngineMethod(PathCamera, popFront, void, (),, "Removes the knot at the fro
"@endtsexample\n")
{
object->popFront();
}
}

View file

@ -44,6 +44,7 @@ bool PathShapeData::preload(bool server, String &errorStr)
void PathShapeData::initPersistFields()
{
docsURL;
Parent::initPersistFields();
}
@ -146,6 +147,7 @@ PathShapeData::PathShapeData()
void PathShape::initPersistFields()
{
docsURL;
addField( "Path", TYPEID< SimObjectRef<SimPath::Path> >(), Offset( mSimPath, PathShape ),
"@brief Name of a Path to follow." );
@ -587,4 +589,4 @@ DefineEngineMethod(PathShape, popFront, void, (), , "Removes the knot at the fro
DefineEngineMethod(PathShape, getState, S32, (), , "PathShape.getState()")
{
return object->getState();
}
}

View file

@ -148,6 +148,7 @@ void PhysicalZone::consoleInit()
void PhysicalZone::initPersistFields()
{
docsURL;
addGroup("Misc");
addField("velocityMod", TypeF32, Offset(mVelocityMod, PhysicalZone), "Multiply velocity of objects entering zone by this value every tick.");
addField("gravityMod", TypeF32, Offset(mGravityMod, PhysicalZone), "Gravity in PhysicalZone. Multiplies against standard gravity.");

View file

@ -110,21 +110,23 @@ bool PhysicsDebrisData::preload( bool server, String &errorStr )
void PhysicsDebrisData::initPersistFields()
{
addGroup( "Display" );
docsURL;
addGroup( "Shapes" );
addProtectedField( "shapeFile", TypeShapeFilename, Offset( mShapeName, PhysicsDebrisData ), &_setShapeData, &defaultProtectedGetFn,
"@brief Path to the .DAE or .DTS file to use for this shape.\n\n"
"Compatable with Live-Asset Reloading.", AbstractClassRep::FIELD_HideInInspectors);
INITPERSISTFIELD_SHAPEASSET(Shape, PhysicsDebrisData, "@brief Shape to use with this debris.\n\n"
"Compatable with Live-Asset Reloading.");
endGroup( "Shapes" );
addGroup("Rendering");
addField( "castShadows", TypeBool, Offset( castShadows, PhysicsDebrisData ),
"@brief Determines if the shape's shadow should be cast onto the environment.\n\n" );
endGroup("Rendering");
endGroup( "Display" );
addGroup( "Physical Properties" );
addGroup( "Physics" );
addField("lifetime", TypeF32, Offset( lifetime, PhysicsDebrisData ),
"@brief Base time, in seconds, that debris persists after time of creation.\n\n"
@ -192,8 +194,7 @@ void PhysicsDebrisData::initPersistFields()
"The result of the calculated buoyancy is relative to the density of the WaterObject the PhysicsDebris is within."
"@see WaterObject::density");
endGroup( "Physical Properties" );
endGroup( "Physics" );
Parent::initPersistFields();
}
@ -332,6 +333,7 @@ PhysicsDebris::~PhysicsDebris()
void PhysicsDebris::initPersistFields()
{
docsURL;
Con::addVariable( "$pref::PhysicsDebris::lifetimeScale", TypeF32, &smLifetimeScale,
"@brief Scales how long %PhysicsDebris will live before being removed.\n"
"@note A value of 0 will disable PhysicsDebris entirely.");
@ -723,4 +725,4 @@ void PhysicsDebris::_onPhysicsReset( PhysicsResetEvent reset )
// Editing stuff, clean up the trash!
safeDeleteObject();
}
}
}

View file

@ -54,7 +54,8 @@ PhysicsForce::~PhysicsForce()
}
void PhysicsForce::initPersistFields()
{
{
docsURL;
Parent::initPersistFields();
}

View file

@ -87,9 +87,8 @@ PhysicsShapeData::~PhysicsShapeData()
void PhysicsShapeData::initPersistFields()
{
Parent::initPersistFields();
addGroup("Media");
docsURL;
addGroup("Shapes");
INITPERSISTFIELD_SHAPEASSET(Shape, PhysicsShapeData, "@brief Shape asset to be used with this physics object.\n\n"
"Compatable with Live-Asset Reloading. ")
@ -103,7 +102,7 @@ void PhysicsShapeData::initPersistFields()
addField( "destroyedShape", TYPEID< SimObjectRef<PhysicsShapeData> >(), Offset( destroyedShape, PhysicsShapeData ),
"@brief Name of a PhysicsShapeData to spawn when this shape is destroyed (optional)." );
endGroup("Media");
endGroup("Shapes");
addGroup( "Physics" );
@ -173,7 +172,8 @@ void PhysicsShapeData::initPersistFields()
addField( "simType", TYPEID< PhysicsShapeData::SimType >(), Offset( simType, PhysicsShapeData ),
"@brief Controls whether this shape is simulated on the server, client, or both physics simulations.\n\n" );
endGroup( "Networking" );
endGroup( "Networking" );
Parent::initPersistFields();
}
void PhysicsShapeData::packData( BitStream *stream )
@ -431,7 +431,8 @@ void PhysicsShape::consoleInit()
}
void PhysicsShape::initPersistFields()
{
{
docsURL;
addGroup( "PhysicsShape" );
addField( "playAmbient", TypeBool, Offset( mPlayAmbient, PhysicsShape ),

View file

@ -282,7 +282,6 @@ IMPLEMENT_CALLBACK( PlayerData, onLeaveMissionArea, void, ( Player* obj ), ( obj
PlayerData::PlayerData()
{
shadowEnable = true;
shadowSize = 256;
shadowProjectionDistance = 14.0f;
@ -705,6 +704,9 @@ bool PlayerData::isJumpAction(U32 action)
void PlayerData::initPersistFields()
{
docsURL;
Parent::initPersistFields();
addField( "pickupRadius", TypeF32, Offset(pickupRadius, PlayerData),
"@brief Radius around the player to collide with Items in the scene (on server).\n\n"
"Internally the pickupRadius is added to the larger side of the initial bounding box "
@ -1163,8 +1165,6 @@ void PlayerData::initPersistFields()
"need to.\n");
endGroup( "Third Person" );
Parent::initPersistFields();
}
void PlayerData::packData(BitStream* stream)

View file

@ -99,6 +99,7 @@ PointLight::~PointLight()
void PointLight::initPersistFields()
{
docsURL;
addGroup( "Light" );
addField( "radius", TypeF32, Offset( mRadius, PointLight ), "Controls the falloff of the light emission" );

View file

@ -147,6 +147,7 @@ Portal::Portal()
void Portal::initPersistFields()
{
docsURL;
addGroup( "Zoning" );
addProtectedField( "frontSidePassable", TypeBool, Offset( mPassableSides[ FrontSide ], Portal ),

View file

@ -81,6 +81,7 @@ Prefab::~Prefab()
void Prefab::initPersistFields()
{
docsURL;
addGroup( "Prefab" );
addProtectedField( "filename", TypePrefabFilename, Offset( mFilename, Prefab ),

View file

@ -232,88 +232,91 @@ ProjectileData::ProjectileData(const ProjectileData& other, bool temp_clone) : G
void ProjectileData::initPersistFields()
{
addField("particleEmitter", TYPEID< ParticleEmitterData >(), Offset(particleEmitter, ProjectileData),
"@brief Particle emitter datablock used to generate particles while the projectile is outside of water.\n\n"
"@note If datablocks are defined for both particleEmitter and particleWaterEmitter, both effects will play "
"as the projectile enters or leaves water.\n\n"
"@see particleWaterEmitter\n");
addField("particleWaterEmitter", TYPEID< ParticleEmitterData >(), Offset(particleWaterEmitter, ProjectileData),
"@brief Particle emitter datablock used to generate particles while the projectile is submerged in water.\n\n"
"@note If datablocks are defined for both particleWaterEmitter and particleEmitter , both effects will play "
"as the projectile enters or leaves water.\n\n"
"@see particleEmitter\n");
docsURL;
addGroup("Shapes");
addProtectedField("projectileShapeName", TypeShapeFilename, Offset(mProjectileShapeName, ProjectileData), &_setProjectileShapeData, &defaultProtectedGetFn,
"@brief File path to the model of the projectile.\n\n", AbstractClassRep::FIELD_HideInInspectors);
INITPERSISTFIELD_SHAPEASSET(ProjectileShape, ProjectileData, "@brief The model of the projectile.\n\n");
addField("scale", TypePoint3F, Offset(scale, ProjectileData),
"@brief Scale to apply to the projectile's size.\n\n"
"@note This is applied after SceneObject::scale\n");
endGroup("Shapes");
addProtectedField("projectileShapeName", TypeShapeFilename, Offset(mProjectileShapeName, ProjectileData), &_setProjectileShapeData, &defaultProtectedGetFn,
"@brief File path to the model of the projectile.\n\n", AbstractClassRep::FIELD_HideInInspectors);
INITPERSISTFIELD_SHAPEASSET(ProjectileShape, ProjectileData, "@brief The model of the projectile.\n\n");
addGroup("Particle Effects");
addField("particleEmitter", TYPEID< ParticleEmitterData >(), Offset(particleEmitter, ProjectileData),
"@brief Particle emitter datablock used to generate particles while the projectile is outside of water.\n\n"
"@note If datablocks are defined for both particleEmitter and particleWaterEmitter, both effects will play "
"as the projectile enters or leaves water.\n\n"
"@see particleWaterEmitter\n");
addField("particleWaterEmitter", TYPEID< ParticleEmitterData >(), Offset(particleWaterEmitter, ProjectileData),
"@brief Particle emitter datablock used to generate particles while the projectile is submerged in water.\n\n"
"@note If datablocks are defined for both particleWaterEmitter and particleEmitter , both effects will play "
"as the projectile enters or leaves water.\n\n"
"@see particleEmitter\n");
addField("explosion", TYPEID< ExplosionData >(), Offset(explosion, ProjectileData),
"@brief Explosion datablock used when the projectile explodes outside of water.\n\n");
addField("waterExplosion", TYPEID< ExplosionData >(), Offset(waterExplosion, ProjectileData),
"@brief Explosion datablock used when the projectile explodes underwater.\n\n");
addField("splash", TYPEID< SplashData >(), Offset(splash, ProjectileData),
"@brief Splash datablock used to create splash effects as the projectile enters or leaves water\n\n");
addField("decal", TYPEID< DecalData >(), Offset(decal, ProjectileData),
"@brief Decal datablock used for decals placed at projectile explosion points.\n\n");
endGroup("Particle Effects");
addField("scale", TypePoint3F, Offset(scale, ProjectileData),
"@brief Scale to apply to the projectile's size.\n\n"
"@note This is applied after SceneObject::scale\n");
addGroup("Sounds");
INITPERSISTFIELD_SOUNDASSET(ProjectileSound, ProjectileData, "The sound for the projectile.");
endGroup("Sounds");
INITPERSISTFIELD_SOUNDASSET(ProjectileSound, ProjectileData, "The sound for the projectile.");
addGroup("Light Emitter");
addField("lightDesc", TYPEID< LightDescription >(), Offset(lightDesc, ProjectileData),
"@brief LightDescription datablock used for lights attached to the projectile.\n\n");
endGroup("Light Emitter");
addField("explosion", TYPEID< ExplosionData >(), Offset(explosion, ProjectileData),
"@brief Explosion datablock used when the projectile explodes outside of water.\n\n");
addField("waterExplosion", TYPEID< ExplosionData >(), Offset(waterExplosion, ProjectileData),
"@brief Explosion datablock used when the projectile explodes underwater.\n\n");
addGroup("Physics");
addProtectedField("lifetime", TypeS32, Offset(lifetime, ProjectileData), &setLifetime, &getScaledValue,
"@brief Amount of time, in milliseconds, before the projectile is removed from the simulation.\n\n"
"Used with fadeDelay to determine the transparency of the projectile at a given time. "
"A projectile may exist up to a maximum of 131040ms (or 4095 ticks) as defined by Projectile::MaxLivingTicks in the source code."
"@see fadeDelay");
addProtectedField("armingDelay", TypeS32, Offset(armingDelay, ProjectileData), &setArmingDelay, &getScaledValue,
"@brief Amount of time, in milliseconds, before the projectile will cause damage or explode on impact.\n\n"
"This value must be equal to or less than the projectile's lifetime.\n\n"
"@see lifetime");
addProtectedField("fadeDelay", TypeS32, Offset(fadeDelay, ProjectileData), &setFadeDelay, &getScaledValue,
"@brief Amount of time, in milliseconds, before the projectile begins to fade out.\n\n"
"This value must be smaller than the projectile's lifetime to have an affect.");
addField("isBallistic", TypeBool, Offset(isBallistic, ProjectileData),
"@brief Detetmines if the projectile should be affected by gravity and whether or not "
"it bounces before exploding.\n\n");
addField("velInheritFactor", TypeF32, Offset(velInheritFactor, ProjectileData),
"@brief Amount of velocity the projectile recieves from the source that created it.\n\n"
"Use an amount between 0 and 1 for the best effect. "
"This value is never modified by the engine.\n"
"@note This value by default is not transmitted between the server and the client.");
addField("muzzleVelocity", TypeF32, Offset(muzzleVelocity, ProjectileData),
"@brief Amount of velocity the projectile recieves from the \"muzzle\" of the gun.\n\n"
"Used with velInheritFactor to determine the initial velocity of the projectile. "
"This value is never modified by the engine.\n\n"
"@note This value by default is not transmitted between the server and the client.\n\n"
"@see velInheritFactor");
addField("impactForce", TypeF32, Offset(impactForce, ProjectileData));
addField("bounceElasticity", TypeF32, Offset(bounceElasticity, ProjectileData),
"@brief Influences post-bounce velocity of a projectile that does not explode on contact.\n\n"
"Scales the velocity from a bounce after friction is taken into account. "
"A value of 1.0 will leave it's velocity unchanged while values greater than 1.0 will increase it.\n");
addField("bounceFriction", TypeF32, Offset(bounceFriction, ProjectileData),
"@brief Factor to reduce post-bounce velocity of a projectile that does not explode on contact.\n\n"
"Reduces bounce velocity by this factor and a multiple of the tangent to impact. "
"Used to simulate surface friction.\n");
addField("gravityMod", TypeF32, Offset(gravityMod, ProjectileData),
"@brief Scales the influence of gravity on the projectile.\n\n"
"The larger this value is, the more that gravity will affect the projectile. "
"A value of 1.0 will assume \"normal\" influence upon it.\n"
"The magnitude of gravity is assumed to be 9.81 m/s/s\n\n"
"@note ProjectileData::isBallistic must be true for this to have any affect.");
endGroup("Physics");
addField("splash", TYPEID< SplashData >(), Offset(splash, ProjectileData),
"@brief Splash datablock used to create splash effects as the projectile enters or leaves water\n\n");
addField("decal", TYPEID< DecalData >(), Offset(decal, ProjectileData),
"@brief Decal datablock used for decals placed at projectile explosion points.\n\n");
addField("lightDesc", TYPEID< LightDescription >(), Offset(lightDesc, ProjectileData),
"@brief LightDescription datablock used for lights attached to the projectile.\n\n");
addField("isBallistic", TypeBool, Offset(isBallistic, ProjectileData),
"@brief Detetmines if the projectile should be affected by gravity and whether or not "
"it bounces before exploding.\n\n");
addField("velInheritFactor", TypeF32, Offset(velInheritFactor, ProjectileData),
"@brief Amount of velocity the projectile recieves from the source that created it.\n\n"
"Use an amount between 0 and 1 for the best effect. "
"This value is never modified by the engine.\n"
"@note This value by default is not transmitted between the server and the client.");
addField("muzzleVelocity", TypeF32, Offset(muzzleVelocity, ProjectileData),
"@brief Amount of velocity the projectile recieves from the \"muzzle\" of the gun.\n\n"
"Used with velInheritFactor to determine the initial velocity of the projectile. "
"This value is never modified by the engine.\n\n"
"@note This value by default is not transmitted between the server and the client.\n\n"
"@see velInheritFactor");
addField("impactForce", TypeF32, Offset(impactForce, ProjectileData));
addProtectedField("lifetime", TypeS32, Offset(lifetime, ProjectileData), &setLifetime, &getScaledValue,
"@brief Amount of time, in milliseconds, before the projectile is removed from the simulation.\n\n"
"Used with fadeDelay to determine the transparency of the projectile at a given time. "
"A projectile may exist up to a maximum of 131040ms (or 4095 ticks) as defined by Projectile::MaxLivingTicks in the source code."
"@see fadeDelay");
addProtectedField("armingDelay", TypeS32, Offset(armingDelay, ProjectileData), &setArmingDelay, &getScaledValue,
"@brief Amount of time, in milliseconds, before the projectile will cause damage or explode on impact.\n\n"
"This value must be equal to or less than the projectile's lifetime.\n\n"
"@see lifetime");
addProtectedField("fadeDelay", TypeS32, Offset(fadeDelay, ProjectileData), &setFadeDelay, &getScaledValue,
"@brief Amount of time, in milliseconds, before the projectile begins to fade out.\n\n"
"This value must be smaller than the projectile's lifetime to have an affect.");
addField("bounceElasticity", TypeF32, Offset(bounceElasticity, ProjectileData),
"@brief Influences post-bounce velocity of a projectile that does not explode on contact.\n\n"
"Scales the velocity from a bounce after friction is taken into account. "
"A value of 1.0 will leave it's velocity unchanged while values greater than 1.0 will increase it.\n");
addField("bounceFriction", TypeF32, Offset(bounceFriction, ProjectileData),
"@brief Factor to reduce post-bounce velocity of a projectile that does not explode on contact.\n\n"
"Reduces bounce velocity by this factor and a multiple of the tangent to impact. "
"Used to simulate surface friction.\n");
addField("gravityMod", TypeF32, Offset(gravityMod, ProjectileData ),
"@brief Scales the influence of gravity on the projectile.\n\n"
"The larger this value is, the more that gravity will affect the projectile. "
"A value of 1.0 will assume \"normal\" influence upon it.\n"
"The magnitude of gravity is assumed to be 9.81 m/s/s\n\n"
"@note ProjectileData::isBallistic must be true for this to have any affect.");
Parent::initPersistFields();
// disallow some field substitutions
onlyKeepClearSubstitutions("explosion");
onlyKeepClearSubstitutions("particleEmitter");
@ -321,8 +324,6 @@ void ProjectileData::initPersistFields()
onlyKeepClearSubstitutions("sound");
onlyKeepClearSubstitutions("splash");
onlyKeepClearSubstitutions("waterExplosion");
Parent::initPersistFields();
}
@ -647,6 +648,7 @@ Projectile::~Projectile()
//--------------------------------------------------------------------------
void Projectile::initPersistFields()
{
docsURL;
addGroup("Physics");
addProtectedField("initialPosition", TypePoint3F, Offset(mInitialPosition, Projectile), &_setInitialPosition, &defaultProtectedGetFn,

View file

@ -88,12 +88,16 @@ ProximityMineData::ProximityMineData()
void ProximityMineData::initPersistFields()
{
docsURL;
Parent::initPersistFields();
addGroup("Sounds");
INITPERSISTFIELD_SOUNDASSET(ArmSound, ProximityMineData, "Arming sound for this proximity mine.");
INITPERSISTFIELD_SOUNDASSET(TriggerSound, ProximityMineData, "Arming sound for this proximity mine.");
endGroup("Sounds");
addGroup( "Arming" );
addField( "armingDelay", TypeF32, Offset(armingDelay, ProximityMineData),
"Delay (in seconds) from when the mine is placed to when it becomes active." );
INITPERSISTFIELD_SOUNDASSET(ArmSound, ProximityMineData, "Arming sound for this proximity mine.");
endGroup( "Arming" );
addGroup( "Triggering" );
@ -111,9 +115,6 @@ void ProximityMineData::initPersistFields()
"Speed above which moving objects within the trigger radius will trigger the mine" );
addField( "triggerDelay", TypeF32, Offset(triggerDelay, ProximityMineData),
"Delay (in seconds) from when the mine is triggered until it explodes." );
INITPERSISTFIELD_SOUNDASSET(TriggerSound, ProximityMineData, "Arming sound for this proximity mine.");
endGroup( "Triggering" );
addGroup( "Explosion" );
@ -124,8 +125,6 @@ void ProximityMineData::initPersistFields()
"ground, which can end up blocking the explosion. This offset along the mine's "
"'up' normal allows you to raise the explosion origin to a better height.");
endGroup( "Explosion" );
Parent::initPersistFields();
}
bool ProximityMineData::preload( bool server, String& errorStr )

View file

@ -61,7 +61,6 @@ ConsoleDocClass( RigidShapeData,
" category = \"RigidShape\";\n"
"\n"
" shapeFile = \"~/data/shapes/boulder/boulder.dts\";\n"
" emap = true;\n"
"\n"
" // Rigid Body\n"
" mass = 500;\n"
@ -112,7 +111,6 @@ ConsoleDocClass( RigidShape,
" category = \"RigidShape\";\n"
"\n"
" shapeFile = \"~/data/shapes/boulder/boulder.dts\";\n"
" emap = true;\n"
"\n"
" // Rigid Body\n"
" mass = 500;\n"
@ -232,8 +230,6 @@ EndImplementEnumType;
RigidShapeData::RigidShapeData()
{
shadowEnable = true;
body.friction = 0;
body.restitution = 1;
@ -516,73 +512,57 @@ void RigidShapeData::unpackData(BitStream* stream)
void RigidShapeData::initPersistFields()
{
addGroup("Physics");
addField("enablePhysicsRep", TypeBool, Offset(enablePhysicsRep, RigidShapeData),
"@brief Creates a representation of the object in the physics plugin.\n");
endGroup("Physics");
docsURL;
Parent::initPersistFields();
addField("massCenter", TypePoint3F, Offset(massCenter, RigidShapeData), "Center of mass for rigid body.");
addField("massBox", TypePoint3F, Offset(massBox, RigidShapeData), "Size of inertial box.");
addField("bodyRestitution", TypeF32, Offset(body.restitution, RigidShapeData), "The percentage of kinetic energy kept by this object in a collision.");
addField("bodyFriction", TypeF32, Offset(body.friction, RigidShapeData), "How much friction this object has. Lower values will cause the object to appear to be more slippery.");
addField("minImpactSpeed", TypeF32, Offset(minImpactSpeed, RigidShapeData),
"Minimum collision speed to classify collision as impact (triggers onImpact on server object)." );
addField("softImpactSpeed", TypeF32, Offset(softImpactSpeed, RigidShapeData), "Minimum speed at which this object must be travelling for the soft impact sound to be played.");
addField("hardImpactSpeed", TypeF32, Offset(hardImpactSpeed, RigidShapeData), "Minimum speed at which the object must be travelling for the hard impact sound to be played.");
addField("minRollSpeed", TypeF32, Offset(minRollSpeed, RigidShapeData));
addField("maxDrag", TypeF32, Offset(maxDrag, RigidShapeData), "Maximum drag available to this object.");
addField("minDrag", TypeF32, Offset(minDrag, RigidShapeData), "Minimum drag available to this object.");
addField("integration", TypeS32, Offset(integration, RigidShapeData), "Number of physics steps to process per tick.");
addField("collisionTol", TypeF32, Offset(collisionTol, RigidShapeData), "Collision distance tolerance.");
addField("contactTol", TypeF32, Offset(contactTol, RigidShapeData), "Contact velocity tolerance.");
addGroup( "Forces" );
addField("dragForce", TypeF32, Offset(dragForce, RigidShapeData), "Used to simulate the constant drag acting on the object");
addField("vertFactor", TypeF32, Offset(vertFactor, RigidShapeData), "The scalar applied to the vertical portion of the velocity drag acting on a object.");
endGroup( "Forces" );
addGroup( "Particle Effects" );
addField("dustEmitter", TYPEID< ParticleEmitterData >(), Offset(dustEmitter, RigidShapeData), "Array of pointers to ParticleEmitterData datablocks which will be used to emit particles at object/terrain contact point.\n");
addField("triggerDustHeight", TypeF32, Offset(triggerDustHeight, RigidShapeData), "Maximum height from the ground at which the object will generate dust.\n");
addField("dustHeight", TypeF32, Offset(dustHeight, RigidShapeData), "Height of dust effects.\n");
addField("dustTrailEmitter", TYPEID< ParticleEmitterData >(), Offset(dustTrailEmitter, RigidShapeData), "Particle emitter used to create a dust trail for the moving object.\n");
addField("splashEmitter", TYPEID< ParticleEmitterData >(), Offset(splashEmitterList, RigidShapeData), VC_NUM_SPLASH_EMITTERS, "Array of pointers to ParticleEmitterData datablocks which will generate splash effects.\n");
addField("splashFreqMod", TypeF32, Offset(splashFreqMod, RigidShapeData), "The simulated frequency modulation of a splash generated by this object. Multiplied along with speed and time elapsed when determining splash emition rate.\n");
addField("splashVelEpsilon", TypeF32, Offset(splashVelEpsilon, RigidShapeData), "The threshold speed at which we consider the object's movement to have stopped when updating splash effects.\n");
addField("splashVelEpsilon", TypeF32, Offset(splashVelEpsilon, RigidShapeData), "The threshold speed at which we consider the object's movement to have stopped when updating splash effects.\n");
endGroup( "Particle Effects" );
addGroup( "Sounds" );
INITPERSISTFIELD_SOUNDASSET_ENUMED(BodySounds, bodySounds, Body::Sounds::MaxSounds, RigidShapeData, "Sounds for body."); INITPERSISTFIELD_SOUNDASSET_ENUMED(WaterSounds, waterSounds, Sounds::MaxSounds, RigidShapeData, "Sounds for interacting with water.");
endGroup( "Sounds" );
INITPERSISTFIELD_SOUNDASSET_ENUMED(BodySounds, bodySounds, Body::Sounds::MaxSounds, RigidShapeData, "Sounds for body.");
addGroup("Physics");
addField("enablePhysicsRep", TypeBool, Offset(enablePhysicsRep, RigidShapeData),
"@brief Creates a representation of the object in the physics plugin.\n");
("massCenter", TypePoint3F, Offset(massCenter, RigidShapeData), "Center of mass for rigid body.");
addField("massBox", TypePoint3F, Offset(massBox, RigidShapeData), "Size of inertial box.");
addField("bodyRestitution", TypeF32, Offset(body.restitution, RigidShapeData), "The percentage of kinetic energy kept by this object in a collision.");
addField("bodyFriction", TypeF32, Offset(body.friction, RigidShapeData), "How much friction this object has. Lower values will cause the object to appear to be more slippery.");
addField("maxDrag", TypeF32, Offset(maxDrag, RigidShapeData), "Maximum drag available to this object.");
addField("minDrag", TypeF32, Offset(minDrag, RigidShapeData), "Minimum drag available to this object.");
addField("integration", TypeS32, Offset(integration, RigidShapeData), "Number of physics steps to process per tick.");
addField("collisionTol", TypeF32, Offset(collisionTol, RigidShapeData), "Collision distance tolerance.");
addField("contactTol", TypeF32, Offset(contactTol, RigidShapeData), "Contact velocity tolerance.");
addField("dragForce", TypeF32, Offset(dragForce, RigidShapeData), "Used to simulate the constant drag acting on the object");
addField("vertFactor", TypeF32, Offset(vertFactor, RigidShapeData), "The scalar applied to the vertical portion of the velocity drag acting on a object.");
endGroup("Physics");
addGroup("Collision");
addField("minImpactSpeed", TypeF32, Offset(minImpactSpeed, RigidShapeData),
"Minimum collision speed to classify collision as impact (triggers onImpact on server object)." );
addField("softImpactSpeed", TypeF32, Offset(softImpactSpeed, RigidShapeData), "Minimum speed at which this object must be travelling for the soft impact sound to be played.");
addField("hardImpactSpeed", TypeF32, Offset(hardImpactSpeed, RigidShapeData), "Minimum speed at which the object must be travelling for the hard impact sound to be played.");
addField("minRollSpeed", TypeF32, Offset(minRollSpeed, RigidShapeData));
addField("exitSplashSoundVelocity", TypeF32, Offset(exitSplashSoundVel, RigidShapeData), "The minimum velocity at which the exit splash sound will be played when emerging from water.\n");
addField("softSplashSoundVelocity", TypeF32, Offset(softSplashSoundVel, RigidShapeData),"The minimum velocity at which the soft splash sound will be played when impacting water.\n");
addField("mediumSplashSoundVelocity", TypeF32, Offset(medSplashSoundVel, RigidShapeData), "The minimum velocity at which the medium splash sound will be played when impacting water.\n");
addField("hardSplashSoundVelocity", TypeF32, Offset(hardSplashSoundVel, RigidShapeData), "The minimum velocity at which the hard splash sound will be played when impacting water.\n");
INITPERSISTFIELD_SOUNDASSET_ENUMED(WaterSounds, waterSounds, Sounds::MaxSounds, RigidShapeData, "Sounds for interacting with water.");
endGroup( "Sounds" );
endGroup("Collision");
addGroup( "Camera" );
addField("cameraRoll", TypeBool, Offset(cameraRoll, RigidShapeData), "Specifies whether the camera's rotation matrix, and the render eye transform are multiplied during camera updates.\n");
addField("cameraLag", TypeF32, Offset(cameraLag, RigidShapeData), "Scalar amount by which the third person camera lags the object, relative to the object's linear velocity.\n");
addField("cameraDecay", TypeF32, Offset(cameraDecay, RigidShapeData), "Scalar rate at which the third person camera offset decays, per tick.\n");
addField("cameraOffset", TypeF32, Offset(cameraOffset, RigidShapeData), "The vertical offset of the object's camera.\n");
endGroup( "Camera" );
Parent::initPersistFields();
}
@ -1706,6 +1686,7 @@ void RigidShape::consoleInit()
void RigidShape::initPersistFields()
{
docsURL;
Parent::initPersistFields();
}

View file

@ -40,6 +40,7 @@ ScopeAlwaysShape::ScopeAlwaysShape()
void ScopeAlwaysShape::initPersistFields()
{
docsURL;
Parent::initPersistFields();
}

View file

@ -174,6 +174,7 @@ void SFXEmitter::consoleInit()
void SFXEmitter::initPersistFields()
{
docsURL;
addGroup( "Media" );
INITPERSISTFIELD_SOUNDASSET(Sound, SFXEmitter, "");

View file

@ -153,7 +153,7 @@ static const char *sDamageStateName[] =
//----------------------------------------------------------------------------
ShapeBaseData::ShapeBaseData()
: shadowEnable( false ),
:
shadowSize( 128 ),
shadowMaxVisibleDistance( 80.0f ),
shadowProjectionDistance( 10.0f ),
@ -208,7 +208,6 @@ ShapeBaseData::ShapeBaseData()
ShapeBaseData::ShapeBaseData(const ShapeBaseData& other, bool temp_clone) : GameBaseData(other, temp_clone)
{
shadowEnable = other.shadowEnable;
shadowSize = other.shadowSize;
shadowMaxVisibleDistance = other.shadowMaxVisibleDistance;
shadowProjectionDistance = other.shadowProjectionDistance;
@ -535,31 +534,17 @@ bool ShapeBaseData::_setMass( void* object, const char* index, const char* data
void ShapeBaseData::initPersistFields()
{
addGroup( "Shadows" );
addField( "shadowEnable", TypeBool, Offset(shadowEnable, ShapeBaseData),
"Enable shadows for this shape (currently unused, shadows are always enabled)." );
addField( "shadowSize", TypeS32, Offset(shadowSize, ShapeBaseData),
"Size of the projected shadow texture (must be power of 2)." );
addField( "shadowMaxVisibleDistance", TypeF32, Offset(shadowMaxVisibleDistance, ShapeBaseData),
"Maximum distance at which shadow is visible (currently unused)." );
addField( "shadowProjectionDistance", TypeF32, Offset(shadowProjectionDistance, ShapeBaseData),
"Maximum height above ground to project shadow. If the object is higher "
"than this no shadow will be rendered." );
addField( "shadowSphereAdjust", TypeF32, Offset(shadowSphereAdjust, ShapeBaseData),
"Scalar applied to the radius of spot shadows (initial radius is based "
"on the shape bounds but can be adjusted with this field)." );
endGroup( "Shadows" );
addGroup( "Render" );
docsURL;
addGroup( "Shapes" );
INITPERSISTFIELD_SHAPEASSET(Shape, ShapeBaseData, "The source shape asset.");
addField("computeCRC", TypeBool, Offset(computeCRC, ShapeBaseData),
"If true, verify that the CRC of the client's shape model matches the "
"server's CRC for the shape model when loaded by the client.");
addField("silentBBoxValidation", TypeBool, Offset(silent_bbox_check, ShapeBaseData));
INITPERSISTFIELD_SHAPEASSET(DebrisShape, ShapeBaseData, "The shape asset to use for auto-generated breakups via blowup(). @note may not be functional.");
endGroup( "Shapes" );
endGroup( "Render" );
addGroup( "Destruction", "Parameters related to the destruction effects of this object." );
addGroup("Particle Effects");
addField( "explosion", TYPEID< ExplosionData >(), Offset(explosion, ShapeBaseData),
"%Explosion to generate when this shape is blown up." );
addField( "underwaterExplosion", TYPEID< ExplosionData >(), Offset(underwaterExplosion, ShapeBaseData),
@ -568,23 +553,17 @@ void ShapeBaseData::initPersistFields()
"%Debris to generate when this shape is blown up." );
addField( "renderWhenDestroyed", TypeBool, Offset(renderWhenDestroyed, ShapeBaseData),
"Whether to render the shape when it is in the \"Destroyed\" damage state." );
endGroup("Particle Effects");
INITPERSISTFIELD_SHAPEASSET(DebrisShape, ShapeBaseData, "The shape asset to use for auto-generated breakups. @note may not be functional.");
endGroup( "Destruction" );
addGroup( "Physics" );
addGroup( "Physics" );
addProtectedField("mass", TypeF32, Offset(mass, ShapeBaseData), &_setMass, &defaultProtectedGetFn, "Shape mass.\nUsed in simulation of moving objects.\n" );
addField( "drag", TypeF32, Offset(drag, ShapeBaseData),
"Drag factor.\nReduces velocity of moving objects." );
addField( "density", TypeF32, Offset(density, ShapeBaseData),
"Shape density.\nUsed when computing buoyancy when in water.\n" );
endGroup( "Physics" );
addGroup( "Damage/Energy" );
addField( "maxEnergy", TypeF32, Offset(maxEnergy, ShapeBaseData),
"Maximum energy level for this object." );
addField( "maxDamage", TypeF32, Offset(maxDamage, ShapeBaseData),
@ -605,11 +584,9 @@ void ShapeBaseData::initPersistFields()
addField( "isInvincible", TypeBool, Offset(isInvincible, ShapeBaseData),
"Invincible flag; when invincible, the object cannot be damaged or "
"repaired." );
endGroup( "Damage/Energy" );
addGroup( "Camera", "The settings used by the shape when it is the camera." );
addField( "cameraMaxDist", TypeF32, Offset(cameraMaxDist, ShapeBaseData),
"The maximum distance from the camera to the object.\n"
"Used when computing a custom camera transform for this object.\n\n"
@ -638,35 +615,38 @@ void ShapeBaseData::initPersistFields()
"Observe this object through its camera transform and default fov.\n"
"If true, when this object is the camera it can provide a custom camera "
"transform and FOV (instead of the default eye transform)." );
endGroup("Camera");
addGroup( "Misc" );
addField( "computeCRC", TypeBool, Offset(computeCRC, ShapeBaseData),
"If true, verify that the CRC of the client's shape model matches the "
"server's CRC for the shape model when loaded by the client." );
endGroup( "Misc" );
addGroup( "Reflection" );
addField( "cubeReflectorDesc", TypeRealString, Offset( cubeDescName, ShapeBaseData ),
"References a ReflectorDesc datablock that defines performance and quality properties for dynamic reflections.\n");
//addField( "reflectMaxRateMs", TypeS32, Offset( reflectMaxRateMs, ShapeBaseData ), "reflection will not be updated more frequently than this" );
//addField( "reflectMaxDist", TypeF32, Offset( reflectMaxDist, ShapeBaseData ), "distance at which reflection is never updated" );
//addField( "reflectMinDist", TypeF32, Offset( reflectMinDist, ShapeBaseData ), "distance at which reflection is always updated" );
//addField( "reflectDetailAdjust", TypeF32, Offset( reflectDetailAdjust, ShapeBaseData ), "scale up or down the detail level for objects rendered in a reflection" );
endGroup( "Reflection" );
addField("remapTextureTags", TypeString, Offset(remap_txr_tags, ShapeBaseData));
addField("silentBBoxValidation", TypeBool, Offset(silent_bbox_check, ShapeBaseData));
// disallow some field substitutions
onlyKeepClearSubstitutions("debris"); // subs resolving to "~~", or "~0" are OK
onlyKeepClearSubstitutions("explosion");
onlyKeepClearSubstitutions("underwaterExplosion");
Parent::initPersistFields();
addGroup("BL Projected Shadows");
addField("shadowSize", TypeS32, Offset(shadowSize, ShapeBaseData),
"Size of the projected shadow texture (must be power of 2).");
addField("shadowMaxVisibleDistance", TypeF32, Offset(shadowMaxVisibleDistance, ShapeBaseData),
"Maximum distance at which shadow is visible (currently unused).");
addField("shadowProjectionDistance", TypeF32, Offset(shadowProjectionDistance, ShapeBaseData),
"Maximum height above ground to project shadow. If the object is higher "
"than this no shadow will be rendered.");
addField("shadowSphereAdjust", TypeF32, Offset(shadowSphereAdjust, ShapeBaseData),
"Scalar applied to the radius of spot shadows (initial radius is based "
"on the shape bounds but can be adjusted with this field).");
endGroup("BL Projected Shadows");
}
DefineEngineMethod( ShapeBaseData, checkDeployPos, bool, ( TransformF txfm ),,
@ -751,7 +731,6 @@ void ShapeBaseData::packData(BitStream* stream)
if(stream->writeFlag(computeCRC))
stream->write(mCRC);
stream->writeFlag(shadowEnable);
stream->write(shadowSize);
stream->write(shadowMaxVisibleDistance);
stream->write(shadowProjectionDistance);
@ -829,7 +808,6 @@ void ShapeBaseData::unpackData(BitStream* stream)
if(computeCRC)
stream->read(&mCRC);
shadowEnable = stream->readFlag();
stream->read(&shadowSize);
stream->read(&shadowMaxVisibleDistance);
stream->read(&shadowProjectionDistance);
@ -1056,6 +1034,7 @@ ShapeBase::~ShapeBase()
void ShapeBase::initPersistFields()
{
docsURL;
addProtectedField( "skin", TypeRealString, Offset(mAppliedSkinName, ShapeBase), &_setFieldSkin, &_getFieldSkin,
"@brief The skin applied to the shape.\n\n"

View file

@ -354,7 +354,6 @@ struct ShapeBaseImageData: public GameBaseData {
bool useRemainderDT;
//
bool emap; ///< Environment mapping on?
bool correctMuzzleVector; ///< Adjust 1st person firing vector to eye's LOS point?
bool correctMuzzleVectorTP; ///< Adjust 3rd person firing vector to camera's LOS point?
bool firstPerson; ///< Render the image when in first person?
@ -542,7 +541,6 @@ public:
// TODO: These are only really used in Basic Lighting
// mode... we should probably move them somewhere else.
bool shadowEnable;
U32 shadowSize;
F32 shadowMaxVisibleDistance;
F32 shadowProjectionDistance;

View file

@ -166,8 +166,6 @@ static ShapeBaseImageData::StateData gDefaultStateData;
ShapeBaseImageData::ShapeBaseImageData()
{
emap = false;
mountPoint = 0;
mountOffset.identity();
eyeOffset.identity();
@ -631,92 +629,109 @@ S32 ShapeBaseImageData::lookupState(const char* name)
void ShapeBaseImageData::initPersistFields()
{
addField( "emap", TypeBool, Offset(emap, ShapeBaseImageData),
"@brief Whether to enable environment mapping on this Image.\n\n" );
INITPERSISTFIELD_SHAPEASSET_ARRAY(Shape, MaxShapes, ShapeBaseImageData, "The shape asset to use for this image in the third person")
docsURL;
addGroup("Shapes");
INITPERSISTFIELD_SHAPEASSET_ARRAY(Shape, MaxShapes, ShapeBaseImageData, "The shape asset to use for this image in the third person")
//addProtectedField("shapeFileFP", TypeShapeFilename, Offset(mShapeName[1], ShapeBaseImageData), _setShapeData, defaultProtectedGetFn, "deprecated alias for ShapeFPFile/Asset", AbstractClassRep::FIELD_HideInInspectors);
addField("casing", TYPEID< DebrisData >(), Offset(casing, ShapeBaseImageData),
"@brief DebrisData datablock to use for ejected casings.\n\n"
"@see stateEjectShell");
addField("shellExitDir", TypePoint3F, Offset(shellExitDir, ShapeBaseImageData),
"@brief Vector direction to eject shell casings.\n\n"
"@see casing");
addField("shellExitVariance", TypeF32, Offset(shellExitVariance, ShapeBaseImageData),
"@brief Variance (in degrees) from the shellExitDir vector to eject casings.\n\n"
"@see shellExitDir");
addField("shellVelocity", TypeF32, Offset(shellVelocity, ShapeBaseImageData),
"@brief Speed at which to eject casings.\n\n"
"@see casing");
addField("computeCRC", TypeBool, Offset(computeCRC, ShapeBaseImageData),
"If true, verify that the CRC of the client's Image matches the server's "
"CRC for the Image when loaded by the client.");
endGroup("Shapes");
addField( "imageAnimPrefix", TypeCaseString, Offset(imageAnimPrefix, ShapeBaseImageData),
"@brief Passed along to the mounting shape to modify animation sequences played in third person. [optional]\n\n" );
addField( "imageAnimPrefixFP", TypeCaseString, Offset(imageAnimPrefixFP, ShapeBaseImageData),
"@brief Passed along to the mounting shape to modify animation sequences played in first person. [optional]\n\n" );
addField( "animateAllShapes", TypeBool, Offset(animateAllShapes, ShapeBaseImageData),
"@brief Indicates that all shapes should be animated in sync.\n\n"
"When multiple shapes are defined for this image datablock, each of them are automatically "
"animated in step with each other. This allows for easy switching between between shapes "
"when some other condition changes, such as going from first person to third person, and "
"keeping their look consistent. If you know that you'll never switch between shapes on the "
"fly, such as players only being allowed in a first person view, then you could set this to "
"false to save some calculations.\n\n"
"There are other circumstances internal to the engine that determine that only the current shape "
"should be animated rather than all defined shapes. In those cases, this property is ignored.\n\n"
"@note This property is only important if you have more than one shape defined, such as shapeFileFP.\n\n"
"@see shapeFileFP\n");
addField( "animateOnServer", TypeBool, Offset(animateOnServer, ShapeBaseImageData),
"@brief Indicates that the image should be animated on the server.\n\n"
"In most cases you'll want this set if you're using useEyeNode. You may also want to "
"set this if the muzzlePoint is animated while it shoots. You can set this "
"to false even if these previous cases are true if the image's shape is set "
"up in the correct position and orientation in the 'root' pose and none of "
"the nodes are animated at key times, such as the muzzlePoint essentially "
"remaining at the same position at the start of the fire state (it could "
"animate just fine after the projectile is away as the muzzle vector is only "
"calculated at the start of the state).\n\n"
"You'll also want to set this to true if you're animating the camera using the "
"image's 'eye' node -- unless the movement is very subtle and doesn't need to "
"be reflected on the server.\n\n"
"@note Setting this to true causes up to four animation threads to be advanced on the server "
"for each instance in use, although for most images only one or two are actually defined.\n\n"
"@see useEyeNode\n");
addField( "scriptAnimTransitionTime", TypeF32, Offset(scriptAnimTransitionTime, ShapeBaseImageData),
"@brief The amount of time to transition between the previous sequence and new sequence when the script prefix has changed.\n\n"
"When setImageScriptAnimPrefix() is used on a ShapeBase that has this image mounted, the image "
"will attempt to switch to the new animation sequence based on the given script prefix. This is "
"the amount of time it takes to transition from the previously playing animation sequence to"
"the new script prefix-based animation sequence.\n"
"@see ShapeBase::setImageScriptAnimPrefix()");
addGroup("Animation");
addField( "imageAnimPrefix", TypeCaseString, Offset(imageAnimPrefix, ShapeBaseImageData),
"@brief Passed along to the mounting shape to modify animation sequences played in third person. [optional]\n\n" );
addField( "imageAnimPrefixFP", TypeCaseString, Offset(imageAnimPrefixFP, ShapeBaseImageData),
"@brief Passed along to the mounting shape to modify animation sequences played in first person. [optional]\n\n" );
addField( "animateAllShapes", TypeBool, Offset(animateAllShapes, ShapeBaseImageData),
"@brief Indicates that all shapes should be animated in sync.\n\n"
"When multiple shapes are defined for this image datablock, each of them are automatically "
"animated in step with each other. This allows for easy switching between between shapes "
"when some other condition changes, such as going from first person to third person, and "
"keeping their look consistent. If you know that you'll never switch between shapes on the "
"fly, such as players only being allowed in a first person view, then you could set this to "
"false to save some calculations.\n\n"
"There are other circumstances internal to the engine that determine that only the current shape "
"should be animated rather than all defined shapes. In those cases, this property is ignored.\n\n"
"@note This property is only important if you have more than one shape defined, such as shapeFileFP.\n\n"
"@see shapeFileFP\n");
addField( "animateOnServer", TypeBool, Offset(animateOnServer, ShapeBaseImageData),
"@brief Indicates that the image should be animated on the server.\n\n"
"In most cases you'll want this set if you're using useEyeNode. You may also want to "
"set this if the muzzlePoint is animated while it shoots. You can set this "
"to false even if these previous cases are true if the image's shape is set "
"up in the correct position and orientation in the 'root' pose and none of "
"the nodes are animated at key times, such as the muzzlePoint essentially "
"remaining at the same position at the start of the fire state (it could "
"animate just fine after the projectile is away as the muzzle vector is only "
"calculated at the start of the state).\n\n"
"You'll also want to set this to true if you're animating the camera using the "
"image's 'eye' node -- unless the movement is very subtle and doesn't need to "
"be reflected on the server.\n\n"
"@note Setting this to true causes up to four animation threads to be advanced on the server "
"for each instance in use, although for most images only one or two are actually defined.\n\n"
"@see useEyeNode\n");
addField( "scriptAnimTransitionTime", TypeF32, Offset(scriptAnimTransitionTime, ShapeBaseImageData),
"@brief The amount of time to transition between the previous sequence and new sequence when the script prefix has changed.\n\n"
"When setImageScriptAnimPrefix() is used on a ShapeBase that has this image mounted, the image "
"will attempt to switch to the new animation sequence based on the given script prefix. This is "
"the amount of time it takes to transition from the previously playing animation sequence to"
"the new script prefix-based animation sequence.\n"
"@see ShapeBase::setImageScriptAnimPrefix()");
endGroup("Animation");
addField( "projectile", TYPEID< ProjectileData >(), Offset(projectile, ShapeBaseImageData),
"@brief The projectile fired by this Image\n\n" );
addField( "cloakable", TypeBool, Offset(cloakable, ShapeBaseImageData),
"@brief Whether this Image can be cloaked.\n\n"
"Currently unused." );
addField("usesEnergy", TypeBool, Offset(usesEnergy, ShapeBaseImageData),
"@brief Flag indicating whether this Image uses energy instead of ammo. The energy level comes from the ShapeBase object we're mounted to.\n\n"
"@see ShapeBase::setEnergyLevel()");
addField("minEnergy", TypeF32, Offset(minEnergy, ShapeBaseImageData),
"@brief Minimum Image energy for it to be operable.\n\n"
"@see usesEnergy");
addGroup("Mounting");
addField( "mountPoint", TypeS32, Offset(mountPoint, ShapeBaseImageData),
"@brief Mount node # to mount this Image to.\n\n"
"This should correspond to a mount# node on the ShapeBase derived object we are mounting to." );
addField( "offset", TypeMatrixPosition, Offset(mountOffset, ShapeBaseImageData),
"@brief \"X Y Z\" translation offset from this Image's <i>mountPoint</i> node to "
"attach to.\n\n"
"Defaults to \"0 0 0\". ie. attach this Image's "
"<i>mountPoint</i> node to the ShapeBase model's mount# node without any offset.\n"
"@see rotation");
addField( "rotation", TypeMatrixRotation, Offset(mountOffset, ShapeBaseImageData),
"@brief \"X Y Z ANGLE\" rotation offset from this Image's <i>mountPoint</i> node "
"to attach to.\n\n"
"Defaults to \"0 0 0\". ie. attach this Image's "
"<i>mountPoint</i> node to the ShapeBase model's mount# node without any additional rotation.\n"
"@see offset");
endGroup("Mounting");
addGroup("Camera");
addField( "eyeOffset", TypeMatrixPosition, Offset(eyeOffset, ShapeBaseImageData),
"@brief \"X Y Z\" translation offset from the ShapeBase model's eye node.\n\n"
"When in first person view, this is the offset from the eye node to place the gun. This "
"gives the gun a fixed point in space, typical of a lot of FPS games.\n"
"@see eyeRotation");
addField( "eyeRotation", TypeMatrixRotation, Offset(eyeOffset, ShapeBaseImageData),
"@brief \"X Y Z ANGLE\" rotation offset from the ShapeBase model's eye node.\n\n"
"When in first person view, this is the rotation from the eye node to place the gun.\n"
"@see eyeOffset");
addField( "useEyeNode", TypeBool, Offset(useEyeNode, ShapeBaseImageData),
"@brief Mount image using image's eyeMount node and place the camera at the image's eye node (or "
"at the eyeMount node if the eye node is missing).\n\n"
@ -728,92 +743,62 @@ void ShapeBaseImageData::initPersistFields()
"@note Read about the animateOnServer field as you may want to set it to true if you're using useEyeNode.\n\n"
"@see eyeOffset\n\n"
"@see animateOnServer\n\n");
addField("firstPerson", TypeBool, Offset(firstPerson, ShapeBaseImageData),
"@brief Set to true to render the image in first person.");
endGroup("Camera");
addGroup("Camera Shake");
addField( "shakeCamera", TypeBool, Offset(shakeCamera, ShapeBaseImageData),
"@brief Flag indicating whether the camera should shake when this Image fires.\n\n" );
addField( "camShakeFreq", TypePoint3F, Offset(camShakeFreq, ShapeBaseImageData),
"@brief Frequency of the camera shaking effect.\n\n"
"@see shakeCamera" );
addField( "camShakeAmp", TypePoint3F, Offset(camShakeAmp, ShapeBaseImageData),
"@brief Amplitude of the camera shaking effect.\n\n"
"@see shakeCamera" );
addField( "camShakeDuration", TypeF32, Offset(camShakeDuration, ShapeBaseImageData),
"Duration (in seconds) to shake the camera." );
addField( "camShakeRadius", TypeF32, Offset(camShakeRadius, ShapeBaseImageData),
"Radial distance that a camera's position must be within relative to the "
"center of the explosion to be shaken." );
addField( "camShakeFalloff", TypeF32, Offset(camShakeFalloff, ShapeBaseImageData),
"Falloff value for the camera shake." );
endGroup("Camera Shake");
addGroup("Physics");
addField( "correctMuzzleVector", TypeBool, Offset(correctMuzzleVector, ShapeBaseImageData),
"@brief Flag to adjust the aiming vector to the eye's LOS point when in 1st person view.\n\n"
"@see ShapeBase::getMuzzleVector()" );
addField( "correctMuzzleVectorTP", TypeBool, Offset(correctMuzzleVectorTP, ShapeBaseImageData),
"@brief Flag to adjust the aiming vector to the camera's LOS point when in 3rd person view.\n\n"
"@see ShapeBase::getMuzzleVector()" );
addField( "firstPerson", TypeBool, Offset(firstPerson, ShapeBaseImageData),
"@brief Set to true to render the image in first person." );
addField( "mass", TypeF32, Offset(mass, ShapeBaseImageData),
"@brief Mass of this Image.\n\n"
"This is added to the total mass of the ShapeBase object." );
addField( "usesEnergy", TypeBool, Offset(usesEnergy,ShapeBaseImageData),
"@brief Flag indicating whether this Image uses energy instead of ammo. The energy level comes from the ShapeBase object we're mounted to.\n\n"
"@see ShapeBase::setEnergyLevel()");
addField( "minEnergy", TypeF32, Offset(minEnergy, ShapeBaseImageData),
"@brief Minimum Image energy for it to be operable.\n\n"
"@see usesEnergy");
addField( "accuFire", TypeBool, Offset(accuFire, ShapeBaseImageData),
"@brief Flag to control whether the Image's aim is automatically converged with "
"the crosshair.\n\n"
"Currently unused." );
endGroup("Physics");
addField( "lightType", TYPEID< ShapeBaseImageData::LightType >(), Offset(lightType, ShapeBaseImageData),
"@brief The type of light this Image emits.\n\n"
"@see ShapeBaseImageLightType");
addField( "lightColor", TypeColorF, Offset(lightColor, ShapeBaseImageData),
"@brief The color of light this Image emits.\n\n"
"@see lightType");
addField( "lightDuration", TypeS32, Offset(lightDuration, ShapeBaseImageData),
"@brief Duration in SimTime of Pulsing and WeaponFire type lights.\n\n"
"@see lightType");
addField( "lightRadius", TypeF32, Offset(lightRadius, ShapeBaseImageData),
"@brief Radius of the light this Image emits.\n\n"
"@see lightType");
addField( "lightBrightness", TypeF32, Offset(lightBrightness, ShapeBaseImageData),
"@brief Brightness of the light this Image emits.\n\n"
"Only valid for WeaponFireLight."
"@see lightType");
addField( "shakeCamera", TypeBool, Offset(shakeCamera, ShapeBaseImageData),
"@brief Flag indicating whether the camera should shake when this Image fires.\n\n" );
addField( "camShakeFreq", TypePoint3F, Offset(camShakeFreq, ShapeBaseImageData),
"@brief Frequency of the camera shaking effect.\n\n"
"@see shakeCamera" );
addField( "camShakeAmp", TypePoint3F, Offset(camShakeAmp, ShapeBaseImageData),
"@brief Amplitude of the camera shaking effect.\n\n"
"@see shakeCamera" );
addField( "camShakeDuration", TypeF32, Offset(camShakeDuration, ShapeBaseImageData),
"Duration (in seconds) to shake the camera." );
addField( "camShakeRadius", TypeF32, Offset(camShakeRadius, ShapeBaseImageData),
"Radial distance that a camera's position must be within relative to the "
"center of the explosion to be shaken." );
addField( "camShakeFalloff", TypeF32, Offset(camShakeFalloff, ShapeBaseImageData),
"Falloff value for the camera shake." );
addField( "casing", TYPEID< DebrisData >(), Offset(casing, ShapeBaseImageData),
"@brief DebrisData datablock to use for ejected casings.\n\n"
"@see stateEjectShell" );
addField( "shellExitDir", TypePoint3F, Offset(shellExitDir, ShapeBaseImageData),
"@brief Vector direction to eject shell casings.\n\n"
"@see casing");
addField( "shellExitVariance", TypeF32, Offset(shellExitVariance, ShapeBaseImageData),
"@brief Variance (in degrees) from the shellExitDir vector to eject casings.\n\n"
"@see shellExitDir");
addField( "shellVelocity", TypeF32, Offset(shellVelocity, ShapeBaseImageData),
"@brief Speed at which to eject casings.\n\n"
"@see casing");
addGroup("Light Emitter");
addField( "lightType", TYPEID< ShapeBaseImageData::LightType >(), Offset(lightType, ShapeBaseImageData),
"@brief The type of light this Image emits.\n\n"
"@see ShapeBaseImageLightType");
addField( "lightColor", TypeColorF, Offset(lightColor, ShapeBaseImageData),
"@brief The color of light this Image emits.\n\n"
"@see lightType");
addField( "lightDuration", TypeS32, Offset(lightDuration, ShapeBaseImageData),
"@brief Duration in SimTime of Pulsing and WeaponFire type lights.\n\n"
"@see lightType");
addField( "lightRadius", TypeF32, Offset(lightRadius, ShapeBaseImageData),
"@brief Radius of the light this Image emits.\n\n"
"@see lightType");
addField( "lightBrightness", TypeF32, Offset(lightBrightness, ShapeBaseImageData),
"@brief Brightness of the light this Image emits.\n\n"
"Only valid for WeaponFireLight."
"@see lightType");
endGroup("Light Emitter");
// State arrays
addArray( "States", MaxStates );
@ -994,18 +979,17 @@ void ShapeBaseImageData::initPersistFields()
endArray( "States" );
addField( "computeCRC", TypeBool, Offset(computeCRC, ShapeBaseImageData),
"If true, verify that the CRC of the client's Image matches the server's "
"CRC for the Image when loaded by the client." );
addField( "maxConcurrentSounds", TypeS32, Offset(maxConcurrentSounds, ShapeBaseImageData),
"@brief Maximum number of sounds this Image can play at a time.\n\n"
"Any value <= 0 indicates that it can play an infinite number of sounds." );
addField( "useRemainderDT", TypeBool, Offset(useRemainderDT, ShapeBaseImageData),
"@brief If true, allow multiple timeout transitions to occur within a single "
"tick (useful if states have a very small timeout).\n\n" );
addGroup("Sounds");
addField( "maxConcurrentSounds", TypeS32, Offset(maxConcurrentSounds, ShapeBaseImageData),
"@brief Maximum number of sounds this Image can play at a time.\n\n"
"Any value <= 0 indicates that it can play an infinite number of sounds." );
endGroup("Sounds");
addGroup("Animation");
addField( "useRemainderDT", TypeBool, Offset(useRemainderDT, ShapeBaseImageData),
"@brief If true, allow multiple timeout transitions to occur within a single "
"tick (useful if states have a very small timeout).\n\n" );
endGroup("Animation");
Parent::initPersistFields();
}

View file

@ -95,6 +95,7 @@ SpotLight::~SpotLight()
void SpotLight::initPersistFields()
{
docsURL;
addGroup( "Light" );
addField( "range", TypeF32, Offset( mRange, SpotLight ) );

View file

@ -95,9 +95,6 @@ ConsoleDocClass( StaticShapeData,
StaticShapeData::StaticShapeData()
{
dynamicTypeField = 0;
shadowEnable = true;
noIndividualDamage = false;
}
@ -111,13 +108,13 @@ StaticShapeData::StaticShapeData(const StaticShapeData& other, bool temp_clone)
void StaticShapeData::initPersistFields()
{
docsURL;
Parent::initPersistFields();
addField("noIndividualDamage", TypeBool, Offset(noIndividualDamage, StaticShapeData), "Deprecated\n\n @internal");
addField("dynamicType", TypeS32, Offset(dynamicTypeField, StaticShapeData),
"@brief An integer value which, if speficied, is added to the value retured by getType().\n\n"
"This allows you to extend the type mask for a StaticShape that uses this datablock. Type masks "
"are used for container queries, etc.");
Parent::initPersistFields();
}
void StaticShapeData::packData(BitStream* stream)
@ -197,6 +194,7 @@ StaticShape::~StaticShape()
void StaticShape::initPersistFields()
{
docsURL;
Parent::initPersistFields();
}

View file

@ -98,6 +98,7 @@ bool TriggerData::onAdd()
void TriggerData::initPersistFields()
{
docsURL;
addGroup("Callbacks");
addField( "tickPeriodMS", TypeS32, Offset( tickPeriodMS, TriggerData ),
@ -370,6 +371,7 @@ void Trigger::consoleInit()
void Trigger::initPersistFields()
{
docsURL;
addField("polyhedron", TypeTriggerPolyhedron, Offset(mTriggerPolyhedron, Trigger),
"@brief Defines a non-rectangular area for the trigger.\n\n"
"Rather than the standard rectangular bounds, this optional parameter defines a quadrilateral "

View file

@ -176,11 +176,7 @@ FRangeValidator speedValidator(0.0f, AnimSpeedMax);
void TSStatic::initPersistFields()
{
addFieldV("AnimOffset", TypeF32, Offset(mAnimOffset, TSStatic), &percentValidator,
"Percent Animation Offset.");
addFieldV("AnimSpeed", TypeF32, Offset(mAnimSpeed, TSStatic), &speedValidator,
"Percent Animation Speed.");
docsURL;
addGroup("Shape");
INITPERSISTFIELD_SHAPEASSET(Shape, TSStatic, "Model to use for this TSStatic");
@ -219,16 +215,21 @@ void TSStatic::initPersistFields()
"name as the new target.\n\n");
endGroup("Materials");
addGroup("Rendering");
addGroup("Animation");
addField("playAmbient", TypeBool, Offset(mPlayAmbient, TSStatic),
"Enables automatic playing of the animation sequence named \"ambient\" (if it exists) when the TSStatic is loaded.");
addFieldV("AnimOffset", TypeF32, Offset(mAnimOffset, TSStatic), &percentValidator,
"Percent Animation Offset.");
addFieldV("AnimSpeed", TypeF32, Offset(mAnimSpeed, TSStatic), &speedValidator,
"Percent Animation Speed.");
endGroup("Animation");
addGroup("Rendering");
addField("meshCulling", TypeBool, Offset(mMeshCulling, TSStatic),
"Enables detailed culling of meshes within the TSStatic. Should only be used "
"with large complex shapes like buildings which contain many submeshes.");
addField("originSort", TypeBool, Offset(mUseOriginSort, TSStatic),
"Enables translucent sorting of the TSStatic by its origin instead of the bounds.");
endGroup("Rendering");
addGroup("Reflection");

View file

@ -124,34 +124,34 @@ AITurretShapeData::AITurretShapeData()
void AITurretShapeData::initPersistFields()
{
addField("maxScanHeading", TypeF32, Offset(maxScanHeading, AITurretShapeData),
"@brief Maximum number of degrees to scan left and right.\n\n"
"@note Maximum scan heading is 90 degrees.\n");
addField("maxScanPitch", TypeF32, Offset(maxScanPitch, AITurretShapeData),
"@brief Maximum number of degrees to scan up and down.\n\n"
"@note Maximum scan pitch is 90 degrees.\n");
addField("maxScanDistance", TypeF32, Offset(maxScanDistance, AITurretShapeData),
"@brief Maximum distance to scan.\n\n"
"When combined with maxScanHeading and maxScanPitch this forms a 3D scanning wedge used to initially "
"locate a target.\n");
addField("scanTickFrequency", TypeS32, Offset(scanTickFrequency, AITurretShapeData),
"@brief How often should we perform a full scan when looking for a target.\n\n"
"Expressed as the number of ticks between full scans, but no less than 1.\n");
addField("scanTickFrequencyVariance", TypeS32, Offset(scanTickFrequencyVariance, AITurretShapeData),
"@brief Random amount that should be added to the scan tick frequency each scan period.\n\n"
"Expressed as the number of ticks to randomly add, but no less than zero.\n");
addField("trackLostTargetTime", TypeF32, Offset(trackLostTargetTime, AITurretShapeData),
"@brief How long after the turret has lost the target should it still track it.\n\n"
"Expressed in seconds.\n");
docsURL;
Parent::initPersistFields();
addGroup("AI Steering");
addField("maxScanHeading", TypeF32, Offset(maxScanHeading, AITurretShapeData),
"@brief Maximum number of degrees to scan left and right.\n\n"
"@note Maximum scan heading is 90 degrees.\n");
addField("maxScanPitch", TypeF32, Offset(maxScanPitch, AITurretShapeData),
"@brief Maximum number of degrees to scan up and down.\n\n"
"@note Maximum scan pitch is 90 degrees.\n");
addField("maxScanDistance", TypeF32, Offset(maxScanDistance, AITurretShapeData),
"@brief Maximum distance to scan.\n\n"
"When combined with maxScanHeading and maxScanPitch this forms a 3D scanning wedge used to initially "
"locate a target.\n");
addField("scanTickFrequency", TypeS32, Offset(scanTickFrequency, AITurretShapeData),
"@brief How often should we perform a full scan when looking for a target.\n\n"
"Expressed as the number of ticks between full scans, but no less than 1.\n");
addField("scanTickFrequencyVariance", TypeS32, Offset(scanTickFrequencyVariance, AITurretShapeData),
"@brief Random amount that should be added to the scan tick frequency each scan period.\n\n"
"Expressed as the number of ticks to randomly add, but no less than zero.\n");
addField("trackLostTargetTime", TypeF32, Offset(trackLostTargetTime, AITurretShapeData),
"@brief How long after the turret has lost the target should it still track it.\n\n"
"Expressed in seconds.\n");
addField("maxWeaponRange", TypeF32, Offset(maxWeaponRange, AITurretShapeData),
"@brief Maximum distance that the weapon will fire upon a target.\n\n");
addField("weaponLeadVelocity", TypeF32, Offset(weaponLeadVelocity, AITurretShapeData),
"@brief Velocity used to lead target.\n\n"
"If value <= 0, don't lead target.\n");
endGroup("AI Steering");
// State arrays
addArray( "States", MaxStates );
@ -196,8 +196,6 @@ void AITurretShapeData::initPersistFields()
"Scoped to AITurretShapeData.");
endArray( "States" );
Parent::initPersistFields();
}
bool AITurretShapeData::onAdd()
@ -467,6 +465,7 @@ AITurretShape::~AITurretShape()
void AITurretShape::initPersistFields()
{
docsURL;
Parent::initPersistFields();
}

View file

@ -87,8 +87,6 @@ TurretShapeData::TurretShapeData()
{
weaponLinkType = FireTogether;
shadowEnable = true;
zRotOnly = false;
startLoaded = true;
@ -133,42 +131,45 @@ TurretShapeData::TurretShapeData()
void TurretShapeData::initPersistFields()
{
addField("zRotOnly", TypeBool, Offset(zRotOnly, TurretShapeData),
"@brief Should the turret allow only z rotations.\n\n"
"True indicates that the turret may only be rotated on its z axis, just like the Item class. "
"This keeps the turret always upright regardless of the surface it lands on.\n");
docsURL;
Parent::initPersistFields();
addGroup("Steering");
addField("zRotOnly", TypeBool, Offset(zRotOnly, TurretShapeData),
"@brief Should the turret allow only z rotations.\n\n"
"True indicates that the turret may only be rotated on its z axis, just like the Item class. "
"This keeps the turret always upright regardless of the surface it lands on.\n");
addField("maxHeading", TypeF32, Offset(maxHeading, TurretShapeData),
"@brief Maximum number of degrees to rotate from center.\n\n"
"A value of 180 or more degrees indicates the turret may rotate completely around.\n");
addField("minPitch", TypeF32, Offset(minPitch, TurretShapeData),
"@brief Minimum number of degrees to rotate down from straight ahead.\n\n");
addField("maxPitch", TypeF32, Offset(maxPitch, TurretShapeData),
"@brief Maximum number of degrees to rotate up from straight ahead.\n\n");
addField("headingRate", TypeF32, Offset(headingRate, TurretShapeData),
"@brief Degrees per second rotation.\n\n"
"A value of 0 means no rotation is allowed. A value less than 0 means the rotation is instantaneous.\n");
addField("pitchRate", TypeF32, Offset(pitchRate, TurretShapeData),
"@brief Degrees per second rotation.\n\n"
"A value of 0 means no rotation is allowed. A value less than 0 means the rotation is instantaneous.\n");
endGroup("Steering");
addGroup("Weapon State");
addField( "weaponLinkType", TYPEID< TurretShapeData::FireLinkType >(), Offset(weaponLinkType, TurretShapeData),
"@brief Set how the mounted weapons are linked and triggered.\n\n"
"<ul><li>FireTogether: All weapons fire under trigger 0.</li>"
"<li>GroupedFire: Weapon mounts 0,2 fire under trigger 0, mounts 1,3 fire under trigger 1.</li>"
"<li>IndividualFire: Each weapon mount fires under its own trigger 0-3.</li></ul>\n"
"@see TurretShapeFireLinkType");
addField("startLoaded", TypeBool, Offset(startLoaded, TurretShapeData),
"@brief Does the turret's mounted weapon(s) start in a loaded state.\n\n"
"True indicates that all mounted weapons start in a loaded state.\n"
"@see ShapeBase::setImageLoaded()");
endGroup("Weapon State");
addGroup("Camera", "The settings used by the shape when it is the camera.");
addField("cameraOffset", TypeF32, Offset(cameraOffset, TurretShapeData),
"Vertical (Z axis) height of the camera above the turret." );
addField("maxHeading", TypeF32, Offset(maxHeading, TurretShapeData),
"@brief Maximum number of degrees to rotate from center.\n\n"
"A value of 180 or more degrees indicates the turret may rotate completely around.\n");
addField("minPitch", TypeF32, Offset(minPitch, TurretShapeData),
"@brief Minimum number of degrees to rotate down from straight ahead.\n\n");
addField("maxPitch", TypeF32, Offset(maxPitch, TurretShapeData),
"@brief Maximum number of degrees to rotate up from straight ahead.\n\n");
addField("headingRate", TypeF32, Offset(headingRate, TurretShapeData),
"@brief Degrees per second rotation.\n\n"
"A value of 0 means no rotation is allowed. A value less than 0 means the rotation is instantaneous.\n");
addField("pitchRate", TypeF32, Offset(pitchRate, TurretShapeData),
"@brief Degrees per second rotation.\n\n"
"A value of 0 means no rotation is allowed. A value less than 0 means the rotation is instantaneous.\n");
Parent::initPersistFields();
endGroup("Camera");
}
void TurretShapeData::packData(BitStream* stream)
@ -300,6 +301,7 @@ TurretShape::~TurretShape()
void TurretShape::initPersistFields()
{
docsURL;
addField("respawn", TypeBool, Offset(mRespawn, TurretShape),
"@brief Respawn the turret after it has been destroyed.\n\n"
"If true, the turret will respawn after it is destroyed.\n");

View file

@ -50,6 +50,15 @@ const static U32 sCollisionMoveMask = ( TerrainObjectType | WaterObjectType
static U32 sServerCollisionMask = sCollisionMoveMask; // ItemObjectType
static U32 sClientCollisionMask = sCollisionMoveMask;
typedef FlyingVehicleData::Sounds engineSounds;
DefineEnumType(engineSounds);
ImplementEnumType(engineSounds, "enum types.\n"
"@ingroup VehicleData\n\n")
{ engineSounds::JetSound, "JetSound", "..." },
{ engineSounds::EngineSound, "EngineSound", "..." },
EndImplementEnumType;
//
const char* FlyingVehicle::sJetSequence[FlyingVehicle::JetAnimCount] =
{
@ -166,15 +175,30 @@ bool FlyingVehicleData::preload(bool server, String &errorStr)
void FlyingVehicleData::initPersistFields()
{
docsURL;
Parent::initPersistFields();
INITPERSISTFIELD_SOUNDASSET_ARRAY(FlyingSounds, Sounds::MaxSounds, FlyingVehicleData, "Sounds for flying vehicle");
addField( "maneuveringForce", TypeF32, Offset(maneuveringForce, FlyingVehicleData),
"@brief Maximum X and Y (horizontal plane) maneuvering force.\n\n"
"The actual force applied depends on the current thrust." );
addGroup("Physics");
addField( "rollForce", TypeF32, Offset(rollForce, FlyingVehicleData),
"@brief Damping torque against rolling maneuvers (rotation about the y-axis), "
"proportional to linear velocity.\n\n"
"Acts to adjust roll to a stable position over time as the vehicle moves." );
addField( "rotationalDrag", TypeF32, Offset(rotationalDrag, FlyingVehicleData),
"Rotational drag factor (slows vehicle rotation speed in all axes)." );
addField( "horizontalSurfaceForce", TypeF32, Offset(horizontalSurfaceForce, FlyingVehicleData),
"@brief Damping force in the opposite direction to sideways velocity.\n\n"
"Provides \"bite\" into the wind for climbing/diving and turning)." );
addField( "hoverHeight", TypeF32, Offset(hoverHeight, FlyingVehicleData),
"The vehicle's height off the ground when at rest." );
addField( "createHoverHeight", TypeF32, Offset(createHoverHeight, FlyingVehicleData),
"@brief The vehicle's height off the ground when useCreateHeight is active.\n\n"
"This can help avoid problems with spawning the vehicle." );
endGroup("Physics");
addGroup("Steering");
addField( "maneuveringForce", TypeF32, Offset(maneuveringForce, FlyingVehicleData),
"@brief Maximum X and Y (horizontal plane) maneuvering force.\n\n"
"The actual force applied depends on the current thrust." );
addField( "verticalSurfaceForce", TypeF32, Offset(verticalSurfaceForce, FlyingVehicleData),
"@brief Damping force in the opposite direction to vertical velocity.\n\n"
"Controls side slip; lower numbers give more slide." );
@ -186,13 +210,9 @@ void FlyingVehicleData::initPersistFields()
addField( "steeringRollForce", TypeF32, Offset(steeringRollForce, FlyingVehicleData),
"Roll force induced by sideways steering input value (controls how much "
"the vehicle rolls when turning)." );
addField( "rollForce", TypeF32, Offset(rollForce, FlyingVehicleData),
"@brief Damping torque against rolling maneuvers (rotation about the y-axis), "
"proportional to linear velocity.\n\n"
"Acts to adjust roll to a stable position over time as the vehicle moves." );
addField( "rotationalDrag", TypeF32, Offset(rotationalDrag, FlyingVehicleData),
"Rotational drag factor (slows vehicle rotation speed in all axes)." );
endGroup("Steering");
addGroup("AutoCorrection");
addField( "maxAutoSpeed", TypeF32, Offset(maxAutoSpeed, FlyingVehicleData),
"Maximum speed for automatic vehicle control assistance - vehicles "
"travelling at speeds above this value do not get control assitance." );
@ -208,13 +228,9 @@ void FlyingVehicleData::initPersistFields()
"@brief Corrective torque applied to level out the vehicle when moving at less "
"than maxAutoSpeed.\n\n"
"The torque is inversely proportional to vehicle speed." );
endGroup("AutoCorrection");
addField( "hoverHeight", TypeF32, Offset(hoverHeight, FlyingVehicleData),
"The vehicle's height off the ground when at rest." );
addField( "createHoverHeight", TypeF32, Offset(createHoverHeight, FlyingVehicleData),
"@brief The vehicle's height off the ground when useCreateHeight is active.\n\n"
"This can help avoid problems with spawning the vehicle." );
addGroup("Particle Effects");
addField( "forwardJetEmitter",TYPEID< ParticleEmitterData >(), Offset(jetEmitter[ForwardJetEmitter], FlyingVehicleData),
"@brief Emitter to generate particles for forward jet thrust.\n\n"
"Forward jet thrust particles are emitted from model nodes JetNozzle0 "
@ -231,8 +247,11 @@ void FlyingVehicleData::initPersistFields()
"Emitter to generate contrail particles from model nodes contrail0 - contrail3." );
addField( "minTrailSpeed", TypeF32, Offset(minTrailSpeed, FlyingVehicleData),
"Minimum speed at which to start generating contrail particles." );
endGroup("Particle Effects");
Parent::initPersistFields();
addGroup("Sounds");
INITPERSISTFIELD_SOUNDASSET_ENUMED(FlyingSounds, engineSounds, Sounds::MaxSounds, FlyingVehicleData, "EngineSounds.");
endGroup("Sounds");
}
void FlyingVehicleData::packData(BitStream* stream)
@ -788,6 +807,7 @@ void FlyingVehicle::unpackUpdate(NetConnection *con, BitStream *stream)
void FlyingVehicle::initPersistFields()
{
docsURL;
Parent::initPersistFields();
}

View file

@ -108,6 +108,7 @@ GuiSpeedometerHud::GuiSpeedometerHud()
void GuiSpeedometerHud::initPersistFields()
{
docsURL;
addGroup("Needle");
addField("maxSpeed", TypeF32, Offset( mMaxSpeed, GuiSpeedometerHud ),

View file

@ -174,79 +174,88 @@ HoverVehicleData::~HoverVehicleData()
//--------------------------------------------------------------------------
void HoverVehicleData::initPersistFields()
{
addField( "dragForce", TypeF32, Offset(dragForce, HoverVehicleData),
docsURL;
Parent::initPersistFields();
addGroup("Physics");
addField( "normalForce", TypeF32, Offset(normalForce, HoverVehicleData),
"Force generated in the ground normal direction when the vehicle is not "
"floating (within stabalizer length from the ground).\n\n"
"@see stabLenMin" );
addField( "stabLenMin", TypeF32, Offset(stabLenMin, HoverVehicleData),
"Length of the base stabalizer when travelling at minimum speed (0).\n"
"Each tick, the vehicle performs 2 raycasts (from the center back and "
"center front of the vehicle) to check for contact with the ground. The "
"base stabalizer length determines the length of that raycast; if "
"neither raycast hit the ground, the vehicle is floating, stabalizer "
"spring and ground normal forces are not applied.\n\n"
"<img src=\"images/hoverVehicle_forces.png\">\n"
"@see stabSpringConstant" );
addField( "stabLenMax", TypeF32, Offset(stabLenMax, HoverVehicleData),
"Length of the base stabalizer when travelling at maximum speed "
"(maxThrustSpeed).\n\n@see stabLenMin\n\n@see mainThrustForce" );
addField("vertFactor", TypeF32, Offset(vertFactor, HoverVehicleData),
"Scalar applied to the vertical portion of the velocity drag acting on "
"the vehicle.\nFor the horizontal (X and Y) components of velocity drag, "
"a factor of 0.25 is applied when the vehicle is floating, and a factor "
"of 1.0 is applied when the vehicle is not floating. This velocity drag "
"is multiplied by the vehicle's dragForce, as defined above, and the "
"result is subtracted from it's movement force.\n"
"@note The vertFactor must be between 0.0 and 1.0 (inclusive).");
addField("stabSpringConstant", TypeF32, Offset(stabSpringConstant, HoverVehicleData),
"Value used to generate stabalizer spring force. The force generated "
"depends on stabilizer compression, that is how close the vehicle is "
"to the ground proportional to current stabalizer length.\n\n"
"@see stabLenMin");
addField("stabDampingConstant", TypeF32, Offset(stabDampingConstant, HoverVehicleData),
"Damping spring force acting against changes in the stabalizer length.\n\n"
"@see stabLenMin");
endGroup("Physics");
addGroup("Steering");
addField( "steeringForce", TypeF32, Offset(steeringForce, HoverVehicleData),
"Yaw (rotation about the Z-axis) force applied when steering in the x-axis direction."
"about the vehicle's Z-axis)" );
addField( "rollForce", TypeF32, Offset(rollForce, HoverVehicleData),
"Roll (rotation about the Y-axis) force applied when steering in the x-axis direction." );
addField( "pitchForce", TypeF32, Offset(pitchForce, HoverVehicleData),
"Pitch (rotation about the X-axis) force applied when steering in the y-axis direction." );
addField( "dragForce", TypeF32, Offset(dragForce, HoverVehicleData),
"Drag force factor that acts opposite to the vehicle velocity.\nAlso "
"used to determnine the vehicle's maxThrustSpeed.\n@see mainThrustForce" );
addField( "vertFactor", TypeF32, Offset(vertFactor, HoverVehicleData),
"Scalar applied to the vertical portion of the velocity drag acting on "
"the vehicle.\nFor the horizontal (X and Y) components of velocity drag, "
"a factor of 0.25 is applied when the vehicle is floating, and a factor "
"of 1.0 is applied when the vehicle is not floating. This velocity drag "
"is multiplied by the vehicle's dragForce, as defined above, and the "
"result is subtracted from it's movement force.\n"
"@note The vertFactor must be between 0.0 and 1.0 (inclusive)." );
addField( "floatingThrustFactor", TypeF32, Offset(floatingThrustFactor, HoverVehicleData),
"Scalar applied to the vehicle's thrust force when the vehicle is floating.\n"
"@note The floatingThrustFactor must be between 0.0 and 1.0 (inclusive)." );
addField( "mainThrustForce", TypeF32, Offset(mainThrustForce, HoverVehicleData),
"Force generated by thrusting the vehicle forward.\nAlso used to determine "
"the maxThrustSpeed:\n\n"
"@tsexample\n"
"maxThrustSpeed = (mainThrustForce + strafeThrustForce) / dragForce;\n"
"@endtsexample\n" );
addField( "reverseThrustForce", TypeF32, Offset(reverseThrustForce, HoverVehicleData),
"Force generated by thrusting the vehicle backward." );
addField( "strafeThrustForce", TypeF32, Offset(strafeThrustForce, HoverVehicleData),
"Force generated by thrusting the vehicle to one side.\nAlso used to "
"determine the vehicle's maxThrustSpeed.\n@see mainThrustForce" );
addField( "turboFactor", TypeF32, Offset(turboFactor, HoverVehicleData),
"Scale factor applied to the vehicle's thrust force when jetting." );
addField( "stabLenMin", TypeF32, Offset(stabLenMin, HoverVehicleData),
"Length of the base stabalizer when travelling at minimum speed (0).\n"
"Each tick, the vehicle performs 2 raycasts (from the center back and "
"center front of the vehicle) to check for contact with the ground. The "
"base stabalizer length determines the length of that raycast; if "
"neither raycast hit the ground, the vehicle is floating, stabalizer "
"spring and ground normal forces are not applied.\n\n"
"<img src=\"images/hoverVehicle_forces.png\">\n"
"@see stabSpringConstant" );
addField( "stabLenMax", TypeF32, Offset(stabLenMax, HoverVehicleData),
"Length of the base stabalizer when travelling at maximum speed "
"(maxThrustSpeed).\n\n@see stabLenMin\n\n@see mainThrustForce" );
addField( "stabSpringConstant", TypeF32, Offset(stabSpringConstant, HoverVehicleData),
"Value used to generate stabalizer spring force. The force generated "
"depends on stabilizer compression, that is how close the vehicle is "
"to the ground proportional to current stabalizer length.\n\n"
"@see stabLenMin" );
addField( "stabDampingConstant", TypeF32, Offset(stabDampingConstant, HoverVehicleData),
"Damping spring force acting against changes in the stabalizer length.\n\n"
"@see stabLenMin" );
addField( "mainThrustForce", TypeF32, Offset(mainThrustForce, HoverVehicleData),
"Force generated by thrusting the vehicle forward.\nAlso used to determine "
"the maxThrustSpeed:\n\n"
"@tsexample\n"
"maxThrustSpeed = (mainThrustForce + strafeThrustForce) / dragForce;\n"
"@endtsexample\n" );
addField( "reverseThrustForce", TypeF32, Offset(reverseThrustForce, HoverVehicleData),
"Force generated by thrusting the vehicle backward." );
addField( "strafeThrustForce", TypeF32, Offset(strafeThrustForce, HoverVehicleData),
"Force generated by thrusting the vehicle to one side.\nAlso used to "
"determine the vehicle's maxThrustSpeed.\n@see mainThrustForce" );
addField( "turboFactor", TypeF32, Offset(turboFactor, HoverVehicleData),
"Scale factor applied to the vehicle's thrust force when jetting." );
addField( "floatingThrustFactor", TypeF32, Offset(floatingThrustFactor, HoverVehicleData),
"Scalar applied to the vehicle's thrust force when the vehicle is floating.\n"
"@note The floatingThrustFactor must be between 0.0 and 1.0 (inclusive)." );
endGroup("Steering");
addGroup("AutoCorrection");
addField( "gyroDrag", TypeF32, Offset(gyroDrag, HoverVehicleData),
"Damping torque that acts against the vehicle's current angular momentum." );
addField( "normalForce", TypeF32, Offset(normalForce, HoverVehicleData),
"Force generated in the ground normal direction when the vehicle is not "
"floating (within stabalizer length from the ground).\n\n"
"@see stabLenMin" );
addField( "restorativeForce", TypeF32, Offset(restorativeForce, HoverVehicleData),
"Force generated to stabalize the vehicle (return it to neutral pitch/roll) "
"when the vehicle is floating (more than stabalizer length from the "
"ground.\n\n@see stabLenMin" );
addField( "steeringForce", TypeF32, Offset(steeringForce, HoverVehicleData),
"Yaw (rotation about the Z-axis) force applied when steering in the x-axis direction."
"about the vehicle's Z-axis)" );
addField( "rollForce", TypeF32, Offset(rollForce, HoverVehicleData),
"Roll (rotation about the Y-axis) force applied when steering in the x-axis direction." );
addField( "pitchForce", TypeF32, Offset(pitchForce, HoverVehicleData),
"Pitch (rotation about the X-axis) force applied when steering in the y-axis direction." );
endGroup("AutoCorrection");
INITPERSISTFIELD_SOUNDASSET_ENUMED(HoverSounds, hoverSoundsEnum, Sounds::MaxSounds, HoverVehicleData, "Sounds for hover vehicle.");
addGroup("Particle Effects");
addField( "dustTrailEmitter", TYPEID< ParticleEmitterData >(), Offset(dustTrailEmitter, HoverVehicleData),
"Emitter to generate particles for the vehicle's dust trail.\nThe trail "
"of dust particles is generated only while the vehicle is moving." );
addField( "forwardJetEmitter", TYPEID< ParticleEmitterData >(), Offset(jetEmitter[ForwardJetEmitter], HoverVehicleData),
"Emitter to generate particles for forward jet thrust.\nForward jet "
"thrust particles are emitted from model nodes JetNozzle0 and JetNozzle1." );
addField( "dustTrailOffset", TypePoint3F, Offset(dustTrailOffset, HoverVehicleData),
"\"X Y Z\" offset from the vehicle's origin from which to generate dust "
"trail particles.\nBy default particles are emitted directly beneath the "
@ -261,23 +270,11 @@ void HoverVehicleData::initPersistFields()
"vehicle's speed is divided by this value to determine how many particles "
"to generate each frame. Lower values give a more dense trail, higher "
"values a more sparse trail." );
endGroup("Sounds");
addField( "floatingGravMag", TypeF32, Offset(floatingGravMag, HoverVehicleData),
"Scale factor applied to the vehicle gravitational force when the vehicle "
"is floating.\n\n@see stabLenMin" );
addField( "brakingForce", TypeF32, Offset(brakingForce, HoverVehicleData),
"Force generated by braking.\nThe vehicle is considered to be braking if "
"it is moving, but the throttle is off, and no left or right thrust is "
"being applied. This force is only applied when the vehicle's velocity is "
"less than brakingActivationSpeed." );
addField( "brakingActivationSpeed", TypeF32, Offset(brakingActivationSpeed, HoverVehicleData),
"Maximum speed below which a braking force is applied.\n\n@see brakingForce" );
addField( "forwardJetEmitter", TYPEID< ParticleEmitterData >(), Offset(jetEmitter[ForwardJetEmitter], HoverVehicleData),
"Emitter to generate particles for forward jet thrust.\nForward jet "
"thrust particles are emitted from model nodes JetNozzle0 and JetNozzle1." );
Parent::initPersistFields();
addGroup("Particle Effects");
INITPERSISTFIELD_SOUNDASSET_ENUMED(HoverSounds, hoverSoundsEnum, Sounds::MaxSounds, HoverVehicleData, "Sounds for hover vehicle.");
endGroup("Sounds");
}

View file

@ -127,7 +127,6 @@ ConsoleDocClass( VehicleData,
VehicleData::VehicleData()
{
shadowEnable = true;
shadowSize = 256;
shadowProjectionDistance = 14.0f;
maxSteeringAngle = M_PI_F/4.0f; // 45 deg.
@ -275,30 +274,10 @@ void VehicleData::unpackData(BitStream* stream)
void VehicleData::initPersistFields()
{
addGroup("Physics");
addField("enablePhysicsRep", TypeBool, Offset(enablePhysicsRep, VehicleData),
"@brief Creates a representation of the object in the physics plugin.\n");
endGroup("Physics");
addField( "jetForce", TypeF32, Offset(jetForce, VehicleData),
"@brief Additional force applied to the vehicle when it is jetting.\n\n"
"For WheeledVehicles, the force is applied in the forward direction. For "
"FlyingVehicles, the force is applied in the thrust direction." );
addField( "jetEnergyDrain", TypeF32, Offset(jetEnergyDrain, VehicleData),
"@brief Energy amount to drain for each tick the vehicle is jetting.\n\n"
"Once the vehicle's energy level reaches 0, it will no longer be able to jet." );
addField( "minJetEnergy", TypeF32, Offset(minJetEnergy, VehicleData),
"Minimum vehicle energy level to begin jetting." );
addField( "steeringReturn", TypeF32, Offset(steeringReturn, VehicleData),
"Rate at which the vehicle's steering returns to forwards when it is moving." );
addField( "steeringReturnSpeedScale", TypeF32, Offset(steeringReturnSpeedScale, VehicleData),
"Amount of effect the vehicle's speed has on its rate of steering return." );
addField( "powerSteering", TypeBool, Offset(powerSteering, VehicleData),
"If true, steering does not auto-centre while the vehicle is being steered by its driver." );
addField( "maxSteeringAngle", TypeF32, Offset(maxSteeringAngle, VehicleData),
"Maximum yaw (horizontal) and pitch (vertical) steering angle in radians." );
docsURL;
Parent::initPersistFields();
addGroup("Particle Effects");
addField( "damageEmitter", TYPEID< ParticleEmitterData >(), Offset(damageEmitterList, VehicleData), VC_NUM_DAMAGE_EMITTERS,
"@brief Array of particle emitters used to generate damage (dust, smoke etc) "
"effects.\n\n"
@ -326,13 +305,43 @@ void VehicleData::initPersistFields()
addField( "numDmgEmitterAreas", TypeF32, Offset(numDmgEmitterAreas, VehicleData),
"Number of damageEmitterOffset values to use for each damageEmitter.\n\n"
"@see damageEmitterOffset" );
endGroup("Particle Effects");
addGroup("Physics");
addField("enablePhysicsRep", TypeBool, Offset(enablePhysicsRep, VehicleData),
"@brief Creates a representation of the object in the physics plugin.\n");
endGroup("Physics");
addGroup("Collision");
addField( "collDamageThresholdVel", TypeF32, Offset(collDamageThresholdVel, VehicleData),
"Minimum collision velocity to cause damage to this vehicle.\nCurrently unused." );
addField( "collDamageMultiplier", TypeF32, Offset(collDamageMultiplier, VehicleData),
"@brief Damage to this vehicle after a collision (multiplied by collision "
"velocity).\n\nCurrently unused." );
endGroup("Collision");
Parent::initPersistFields();
addGroup("Steering");
addField( "jetForce", TypeF32, Offset(jetForce, VehicleData),
"@brief Additional force applied to the vehicle when it is jetting.\n\n"
"For WheeledVehicles, the force is applied in the forward direction. For "
"FlyingVehicles, the force is applied in the thrust direction." );
addField( "jetEnergyDrain", TypeF32, Offset(jetEnergyDrain, VehicleData),
"@brief Energy amount to drain for each tick the vehicle is jetting.\n\n"
"Once the vehicle's energy level reaches 0, it will no longer be able to jet." );
addField( "minJetEnergy", TypeF32, Offset(minJetEnergy, VehicleData),
"Minimum vehicle energy level to begin jetting." );
addField( "maxSteeringAngle", TypeF32, Offset(maxSteeringAngle, VehicleData),
"Maximum yaw (horizontal) and pitch (vertical) steering angle in radians." );
endGroup("Steering");
addGroup("AutoCorrection");
addField( "powerSteering", TypeBool, Offset(powerSteering, VehicleData),
"If true, steering does not auto-centre while the vehicle is being steered by its driver." );
addField( "steeringReturn", TypeF32, Offset(steeringReturn, VehicleData),
"Rate at which the vehicle's steering returns to forwards when it is moving." );
addField( "steeringReturnSpeedScale", TypeF32, Offset(steeringReturnSpeedScale, VehicleData),
"Amount of effect the vehicle's speed has on its rate of steering return." );
endGroup("AutoCorrection");
}
@ -1100,6 +1109,7 @@ void Vehicle::consoleInit()
void Vehicle::initPersistFields()
{
docsURL;
addField( "disableMove", TypeBool, Offset(mDisableMove, Vehicle),
"When this flag is set, the vehicle will ignore throttle changes." );

View file

@ -59,6 +59,7 @@ VehicleBlocker::~VehicleBlocker()
//--------------------------------------------------------------------------
void VehicleBlocker::initPersistFields()
{
docsURL;
addField("dimensions", TypePoint3F, Offset(mDimensions, VehicleBlocker));
Parent::initPersistFields();
}

View file

@ -112,6 +112,7 @@ bool WheeledVehicleTire::preload(bool server, String &errorStr)
void WheeledVehicleTire::initPersistFields()
{
docsURL;
INITPERSISTFIELD_SHAPEASSET(Shape, WheeledVehicleTire, "The shape to use for the wheel.");
addField( "mass", TypeF32, Offset(mass, WheeledVehicleTire),
@ -233,6 +234,7 @@ WheeledVehicleSpring::WheeledVehicleSpring()
void WheeledVehicleSpring::initPersistFields()
{
docsURL;
addField( "length", TypeF32, Offset(length, WheeledVehicleSpring),
"@brief Maximum spring length. ie. how far the wheel can extend from the "
"root hub position.\n\n"
@ -448,13 +450,20 @@ bool WheeledVehicleData::mirrorWheel(Wheel* we)
void WheeledVehicleData::initPersistFields()
{
docsURL;
Parent::initPersistFields();
addGroup("Particle Effects");
addField("tireEmitter", TYPEID< ParticleEmitterData >(), Offset(tireEmitter, WheeledVehicleData),
"ParticleEmitterData datablock used to generate particles from each wheel "
"when the vehicle is moving and the wheel is in contact with the ground.");
endGroup("Particle Effects");
addGroup("Sounds");
INITPERSISTFIELD_SOUNDASSET_ENUMED(WheeledVehicleSounds, WheeledVehicleSoundsEnum, MaxSounds, WheeledVehicleData, "Sounds related to wheeled vehicle.");
endGroup("Sounds");
addField("tireEmitter",TYPEID< ParticleEmitterData >(), Offset(tireEmitter, WheeledVehicleData),
"ParticleEmitterData datablock used to generate particles from each wheel "
"when the vehicle is moving and the wheel is in contact with the ground.");
addGroup("Steering");
addField("maxWheelSpeed", TypeF32, Offset(maxWheelSpeed, WheeledVehicleData),
"@brief Maximum linear velocity of each wheel.\n\n"
"This caps the maximum speed of the vehicle." );
@ -468,8 +477,7 @@ void WheeledVehicleData::initPersistFields()
addField("brakeTorque", TypeF32, Offset(brakeTorque, WheeledVehicleData),
"@brief Torque applied when braking.\n\n"
"This controls how fast the vehicle will stop when the brakes are applied." );
Parent::initPersistFields();
endGroup("Steering");
}
@ -555,6 +563,7 @@ WheeledVehicle::~WheeledVehicle()
void WheeledVehicle::initPersistFields()
{
docsURL;
Parent::initPersistFields();
}

View file

@ -85,6 +85,7 @@ void Zone::consoleInit()
#ifdef TORQUE_TOOLS
void Zone::initPersistFields()
{
docsURL;
addProtectedField("selectAll", TypeBool, Offset(mSelecting, Zone),
&_doSelect, &defaultProtectedGetFn, "Select all in this zone", AbstractClassRep::FieldFlags::FIELD_ComponentInspectors);

View file

@ -60,8 +60,9 @@ VController::~VController( void )
// Void.
}
void VController::initPersistFields( void )
void VController::initPersistFields()
{
docsURL;
addGroup( "Controller" );
addProtectedField( "Time", TypeS32, Offset( mTime, VController ), &setTime, &defaultProtectedGetFn, "Current position of the Controller (in milliseconds)." );
addProtectedField( "Duration", TypeS32, Offset( mDuration, VController ), &setDuration, &defaultProtectedGetFn, "Total length of the sequence (in milliseconds)." );

View file

@ -152,7 +152,7 @@ public:
VController();
~VController();
static void initPersistFields( void );
static void initPersistFields();
// ITickable.

View file

@ -40,8 +40,9 @@ VEvent::VEvent( void ) :
setLabel( "DefaultEvent" );
}
void VEvent::initPersistFields( void )
void VEvent::initPersistFields()
{
docsURL;
Parent::initPersistFields();
addProtectedField( "TriggerTime", TypeS32, Offset( mTriggerTime, VEvent ), &setTriggerTime, &defaultProtectedGetFn, "The time that this event is triggered." );
@ -403,4 +404,4 @@ void VEvent::setDuration( const S32 &pDuration )
// Apply Duration.
mDuration = pDuration;
}
}

View file

@ -48,7 +48,7 @@ public:
VEvent( void );
static void initPersistFields( void );
static void initPersistFields();
// Controller Methods.

View file

@ -42,8 +42,9 @@ VObject::~VObject( void )
remove();
}
void VObject::initPersistFields( void )
void VObject::initPersistFields()
{
docsURL;
// Don't Use Parent Fields.
// Parent::initPersistFields();

View file

@ -66,7 +66,7 @@ public:
VObject( void );
virtual ~VObject( void );
static void initPersistFields( void );
static void initPersistFields();
// Reference Methods.

View file

@ -38,8 +38,9 @@ VShapeAnimationEvent::VShapeAnimationEvent( void ) :
//-----------------------------------------------------------------------------
void VShapeAnimationEvent::initPersistFields( void )
void VShapeAnimationEvent::initPersistFields()
{
docsURL;
Parent::initPersistFields();
addField( "AnimationData", TypeRealString, Offset( mAnimationData, VShapeAnimationEvent ), "The name of the Animation Sequence to play upon triggering." );
@ -151,4 +152,4 @@ F32 VShapeAnimationEvent::getAnimationPosition( const S32 &pTime )
const S32 loopInterp = S32( mDuration * interp ) % duration;
return ( F32 )loopInterp / ( F32 )duration;
}
}

View file

@ -46,7 +46,7 @@ public:
VShapeAnimationEvent( void );
static void initPersistFields( void );
static void initPersistFields();
// Callback Methods.

Some files were not shown because too many files have changed in this diff Show more