From 44b0d896b88ad818830e8c3259ad98cd73121647 Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Mon, 17 Mar 2025 22:39:01 -0500 Subject: [PATCH] consolidate addfieldV method contents to avoid duplication report *what* field is an invalid console type prune down floating point fuzzed validators to 0 default the visual fidelity to POINT_EPSILON (0.0001) rather than 1/FLT_MAX use the bit(bitcount) macro for legibility fix breakangle --- Engine/source/T3D/fx/particle.cpp | 10 ++--- Engine/source/console/consoleObject.cpp | 56 ++++++++++-------------- Engine/source/console/typeValidators.cpp | 14 +++--- Engine/source/console/typeValidators.h | 8 +++- Engine/source/environment/decalRoad.cpp | 2 +- Engine/source/sfx/sfxDescription.cpp | 2 +- 6 files changed, 42 insertions(+), 50 deletions(-) diff --git a/Engine/source/T3D/fx/particle.cpp b/Engine/source/T3D/fx/particle.cpp index 8e6962313..a41aa13e2 100644 --- a/Engine/source/T3D/fx/particle.cpp +++ b/Engine/source/T3D/fx/particle.cpp @@ -138,11 +138,11 @@ ParticleData::ParticleData() //----------------------------------------------------------------------------- -FRangeValidator dragCoefFValidator(0.f, 5.f); -FRangeValidator gravCoefFValidator(-10.f, 10.f); -FRangeValidator spinRandFValidator(-1000.f, 1000.f); -FRangeValidator particleTimeFValidator(0.0f, 1.0f, 1<<8); -FRangeValidator particleSizeFValidator(0.0f, MaxParticleSize, 1<<16); +FRangeValidator dragCoefFValidator(0.f, 5.f, BIT(10)); +FRangeValidator gravCoefFValidator(-10.f, 10.f, BIT(12)); +FRangeValidator spinRandFValidator(-1000.f, 1000.f, BIT(11)); +FRangeValidator particleTimeFValidator(0.0f, 1.0f, BIT(8)); +FRangeValidator particleSizeFValidator(0.0f, MaxParticleSize, BIT(16)); //----------------------------------------------------------------------------- // initPersistFields diff --git a/Engine/source/console/consoleObject.cpp b/Engine/source/console/consoleObject.cpp index 71a9ed545..6e828065f 100644 --- a/Engine/source/console/consoleObject.cpp +++ b/Engine/source/console/consoleObject.cpp @@ -507,6 +507,8 @@ void ConsoleObject::addField(const char* in_pFieldname, { AbstractClassRep::Field f; f.pFieldname = StringTable->insert(in_pFieldname); + ConsoleBaseType* conType = ConsoleBaseType::getType(in_fieldType); + AssertFatal(conType, avar("ConsoleObject::addProtectedField[%s] - invalid console type", in_pFieldname)); if (in_pFieldDocs) f.pFieldDocs = in_pFieldDocs; @@ -522,8 +524,6 @@ void ConsoleObject::addField(const char* in_pFieldname, f.writeDataFn = in_writeDataFn; f.networkMask = 0; - ConsoleBaseType* conType = ConsoleBaseType::getType(in_fieldType); - AssertFatal(conType, "ConsoleObject::addField - invalid console type"); f.table = conType->getEnumTable(); sg_tempFieldList.push_back(f); @@ -602,6 +602,8 @@ void ConsoleObject::addProtectedField(const char* in_pFieldname, { AbstractClassRep::Field f; f.pFieldname = StringTable->insert(in_pFieldname); + ConsoleBaseType* conType = ConsoleBaseType::getType(in_fieldType); + AssertFatal(conType, avar("ConsoleObject::addProtectedField[%s] - invalid console type", in_pFieldname)); if (in_pFieldDocs) f.pFieldDocs = in_pFieldDocs; @@ -616,9 +618,6 @@ void ConsoleObject::addProtectedField(const char* in_pFieldname, f.getDataFn = in_getDataFn; f.writeDataFn = in_writeDataFn; f.networkMask = 0; - - ConsoleBaseType* conType = ConsoleBaseType::getType(in_fieldType); - AssertFatal(conType, "ConsoleObject::addProtectedField - invalid console type"); f.table = conType->getEnumTable(); sg_tempFieldList.push_back(f); @@ -637,6 +636,8 @@ void ConsoleObject::addProtectedFieldV(const char* in_pFieldname, { AbstractClassRep::Field f; f.pFieldname = StringTable->insert(in_pFieldname); + ConsoleBaseType* conType = ConsoleBaseType::getType(in_fieldType); + AssertFatal(conType, avar("ConsoleObject::addProtectedField[%s] - invalid console type", in_pFieldname)); if (in_pFieldDocs) f.pFieldDocs = in_pFieldDocs; @@ -652,10 +653,7 @@ void ConsoleObject::addProtectedFieldV(const char* in_pFieldname, f.writeDataFn = in_writeDataFn; f.networkMask = 0; - ConsoleBaseType* conType = ConsoleBaseType::getType(in_fieldType); - AssertFatal(conType, "ConsoleObject::addProtectedField - invalid console type"); - f.table = conType->getEnumTable(); - + v->fieldIndex = sg_tempFieldList.size(); sg_tempFieldList.push_back(f); } @@ -704,30 +702,6 @@ void ConsoleObject::addProtectedFieldV(const char* in_pFieldname, flags); } -void ConsoleObject::addFieldV(const char* in_pFieldname, - const U32 in_fieldType, - const dsize_t in_fieldOffset, - TypeValidator *v, - const char* in_pFieldDocs) -{ - AbstractClassRep::Field f; - f.pFieldname = StringTable->insert(in_pFieldname); - if(in_pFieldDocs) - f.pFieldDocs = in_pFieldDocs; - f.type = in_fieldType; - f.offset = in_fieldOffset; - f.elementCount = 1; - f.table = NULL; - f.setDataFn = &defaultProtectedSetFn; - f.getDataFn = &defaultProtectedGetFn; - f.writeDataFn = &defaultProtectedWriteFn; - f.validator = v; - f.networkMask = 0; - v->fieldIndex = sg_tempFieldList.size(); - - sg_tempFieldList.push_back(f); -} - void ConsoleObject::addFieldV(const char* in_pFieldname, const U32 in_fieldType, const dsize_t in_fieldOffset, @@ -737,11 +711,12 @@ void ConsoleObject::addFieldV(const char* in_pFieldname, { AbstractClassRep::Field f; f.pFieldname = StringTable->insert(in_pFieldname); + ConsoleBaseType* conType = ConsoleBaseType::getType(in_fieldType); + AssertFatal(conType, avar("ConsoleObject::addProtectedField[%s] - invalid console type", in_pFieldname)); if (in_pFieldDocs) f.pFieldDocs = in_pFieldDocs; f.type = in_fieldType; f.offset = in_fieldOffset; - f.elementCount = 1; f.table = NULL; f.setDataFn = &defaultProtectedSetFn; f.getDataFn = &defaultProtectedGetFn; @@ -754,6 +729,19 @@ void ConsoleObject::addFieldV(const char* in_pFieldname, sg_tempFieldList.push_back(f); } +void ConsoleObject::addFieldV(const char* in_pFieldname, + const U32 in_fieldType, + const dsize_t in_fieldOffset, + TypeValidator* v, + const char* in_pFieldDocs) +{ + addFieldV(in_pFieldname, + in_fieldType, + in_fieldOffset, + v, + 1, + in_pFieldDocs); +} void ConsoleObject::addDeprecatedField(const char *fieldName) { AbstractClassRep::Field f; diff --git a/Engine/source/console/typeValidators.cpp b/Engine/source/console/typeValidators.cpp index c34537fa1..237055845 100644 --- a/Engine/source/console/typeValidators.cpp +++ b/Engine/source/console/typeValidators.cpp @@ -100,15 +100,15 @@ void Point3NormalizeValidator::validateType(SimObject *object, void *typePtr) namespace CommonValidators { - FRangeValidator F32Range(F32_MIN, F32_MAX, F32_MAX); - FRangeValidator DirFloat(-1.0f, 1.0f); - FRangeValidator NegDefaultF32(-1.0f, F32_MAX, F32_MAX); - FRangeValidator PositiveFloat(0.0f, F32_MAX, F32_MAX); - FRangeValidator PositiveNonZeroFloat((F32)POINT_EPSILON, F32_MAX); + FRangeValidator F32Range(F32_MIN, F32_MAX, 1 / POINT_EPSILON); + FRangeValidator DirFloat(-1.0f, 1.0f, 1 / POINT_EPSILON); + FRangeValidator NegDefaultF32(-1.0f, F32_MAX, 1 / POINT_EPSILON); + FRangeValidator PositiveFloat(0.0f, F32_MAX, 1 / POINT_EPSILON); + FRangeValidator PositiveNonZeroFloat((F32)POINT_EPSILON, F32_MAX, 1 / POINT_EPSILON); FRangeValidator NormalizedFloat(0.0f, 1.0f); - FRangeValidator F32_8BitPercent(0.0f, 1.0f, 1 << 8); - FRangeValidator F32_16BitPercent(0.0f, 1.0f, 1 << 16); + FRangeValidator F32_8BitPercent(0.0f, 1.0f, BIT(8)); + FRangeValidator F32_16BitPercent(0.0f, 1.0f, BIT(16)); FRangeValidator ValidSlopeAngle(0.0f, 89.9f, 89.9f); FRangeValidator CornerAngle(0.0f, 90.0f, 90.0f); diff --git a/Engine/source/console/typeValidators.h b/Engine/source/console/typeValidators.h index f9bc57b6c..0a5cd338c 100644 --- a/Engine/source/console/typeValidators.h +++ b/Engine/source/console/typeValidators.h @@ -23,6 +23,10 @@ #ifndef _TYPEVALIDATORS_H_ #define _TYPEVALIDATORS_H_ +#ifndef _MMATHFN_H_ +#include "math/mMathFn.h" +#endif + class TypeValidator { public: @@ -50,8 +54,8 @@ class FRangeValidator : public TypeValidator public: FRangeValidator(F32 minValue, F32 maxValue, F32 fidelity = 0.0f) { - minV = minValue; - maxV = maxValue; + minV = mFabs(minValue) > F32_MIN ? minValue : 0.0f; + maxV = mFabs(maxValue) > F32_MIN ? maxValue : 0.0f; mFidelity = fidelity; } void validateType(SimObject *object, void *typePtr) override; diff --git a/Engine/source/environment/decalRoad.cpp b/Engine/source/environment/decalRoad.cpp index d11a02344..e769e2bfb 100644 --- a/Engine/source/environment/decalRoad.cpp +++ b/Engine/source/environment/decalRoad.cpp @@ -312,7 +312,7 @@ void DecalRoad::initPersistFields() addProtectedFieldV("textureLength", TypeRangedF32, Offset(mTextureLength, DecalRoad), &DecalRoad::ptSetTextureLength, &defaultProtectedGetFn, &drTextureLengthV, "The length in meters of textures mapped to the DecalRoad" ); - addProtectedFieldV( "breakAngle", TypeF32, Offset( mBreakAngle, DecalRoad ), &DecalRoad::ptSetBreakAngle, &defaultProtectedGetFn, &CommonValidators::PosDegreeRange, + addProtectedFieldV( "breakAngle", TypeRangedF32, Offset( mBreakAngle, DecalRoad ), &DecalRoad::ptSetBreakAngle, &defaultProtectedGetFn, &CommonValidators::PosDegreeRange, "Angle in degrees - DecalRoad will subdivided the spline if its curve is greater than this threshold." ); addField( "renderPriority", TypeS32, Offset( mRenderPriority, DecalRoad ), diff --git a/Engine/source/sfx/sfxDescription.cpp b/Engine/source/sfx/sfxDescription.cpp index 5a1eb0430..a0c5e1330 100644 --- a/Engine/source/sfx/sfxDescription.cpp +++ b/Engine/source/sfx/sfxDescription.cpp @@ -426,7 +426,7 @@ void SFXDescription::initPersistFields() "Reverb echo depth."); addFieldV("reverbModTime", TypeRangedF32, Offset(mReverb.flModulationTime, SFXDescription), &CommonValidators::PositiveFloat, "Reverb Modulation time."); - addFieldV("reverbModDepth", TypeRangedF32, Offset(mReverb.flModulationDepth, SFXDescription), &CommonValidators::PositiveFloat, + addFieldV("reverbModDepth", TypeRangedF32, Offset(mReverb.flModulationDepth, SFXDescription), &CommonValidators::NormalizedFloat, "Reverb Modulation Depth."); addFieldV("airAbsorbtionGainHF", TypeRangedF32, Offset(mReverb.flAirAbsorptionGainHF, SFXDescription), &CommonValidators::PositiveFloat, "High Frequency air absorbtion");