From 6bec47d3fa9855030f5f6506c257fc0dc8a49f42 Mon Sep 17 00:00:00 2001 From: marauder2k7 Date: Tue, 28 Sep 2021 23:36:04 +0100 Subject: [PATCH] -SoundAsset added init for enum types. -Vehicles updated to use enum initpersistfield. --- Engine/source/T3D/assets/SoundAsset.h | 10 +++++++ Engine/source/T3D/vehicles/hoverVehicle.cpp | 14 +++++++-- Engine/source/T3D/vehicles/vehicle.cpp | 30 ++++++++++++++++--- Engine/source/T3D/vehicles/wheeledVehicle.cpp | 15 ++++++++-- Engine/source/T3D/vehicles/wheeledVehicle.h | 1 + 5 files changed, 62 insertions(+), 8 deletions(-) diff --git a/Engine/source/T3D/assets/SoundAsset.h b/Engine/source/T3D/assets/SoundAsset.h index 502732fee..486aca6c0 100644 --- a/Engine/source/T3D/assets/SoundAsset.h +++ b/Engine/source/T3D/assets/SoundAsset.h @@ -371,6 +371,16 @@ DefineEngineMethod(className, set##name, bool, (const char* shape), , assetText #pragma endregion +#define assetEnumNameConcat(x,suff,ForT)(new std::string(std::string(#x) + suff + std::string(#ForT)))->c_str() + +#define INITPERSISTFIELD_SOUNDASSET_ENUMED(name, enumType, maxValue, consoleClass, docs) \ + for (U32 i = 0; i <= maxValue; i++)\ + {\ + const char* enumString = castConsoleTypeToString(static_cast(i));\ + addProtectedField(assetEnumNameConcat(name,enumString, File), TypeSoundFilename, Offset(m##name##Name[i], consoleClass), _set##name##Data, & defaultProtectedGetFn, assetText(name, docs), AbstractClassRep::FIELD_HideInInspectors); \ + addProtectedField(assetEnumNameConcat(name,enumString, Asset), TypeSoundAssetId, Offset(m##name##AssetId[i], consoleClass), _set##name##Data, & defaultProtectedGetFn, assetText(name, asset reference.));\ + }\ + #pragma region Arrayed Asset Macros #define DECLARE_SOUNDASSET_ARRAY(className,name,max) public: \ diff --git a/Engine/source/T3D/vehicles/hoverVehicle.cpp b/Engine/source/T3D/vehicles/hoverVehicle.cpp index 0cddc2c72..7deb81fe0 100644 --- a/Engine/source/T3D/vehicles/hoverVehicle.cpp +++ b/Engine/source/T3D/vehicles/hoverVehicle.cpp @@ -68,6 +68,16 @@ ConsoleDocClass( HoverVehicle, "@ingroup Vehicles\n" ); +typedef HoverVehicleData::Sounds hoverSoundsEnum; +DefineEnumType(hoverSoundsEnum); + +ImplementEnumType(hoverSoundsEnum, "enum types.\n" + "@ingroup HoverVehicleData\n\n") + { HoverVehicleData::JetSound, "JetSound", "..." }, + { HoverVehicleData::EngineSound, "EngineSound", "..." }, + { HoverVehicleData::FloatSound, "FloatSound", "..." }, +EndImplementEnumType; + namespace { const U32 sCollisionMoveMask = (TerrainObjectType | PlayerObjectType | @@ -232,7 +242,7 @@ void HoverVehicleData::initPersistFields() addField( "pitchForce", TypeF32, Offset(pitchForce, HoverVehicleData), "Pitch (rotation about the X-axis) force applied when steering in the y-axis direction." ); - INITPERSISTFIELD_SOUNDASSET_ARRAY(HoverSounds, Sounds::MaxSounds, HoverVehicleData, "Sounds for hover vehicle."); + INITPERSISTFIELD_SOUNDASSET_ENUMED(HoverSounds, hoverSoundsEnum, Sounds::MaxSounds, HoverVehicleData, "Sounds for hover vehicle."); addField( "dustTrailEmitter", TYPEID< ParticleEmitterData >(), Offset(dustTrailEmitter, HoverVehicleData), "Emitter to generate particles for the vehicle's dust trail.\nThe trail " @@ -307,7 +317,7 @@ bool HoverVehicleData::preload(bool server, String &errorStr) if (!server) { for (S32 i = 0; i < MaxSounds; i++) - if (mHoverSounds[i]) + if (getHoverSounds(i) != StringTable->EmptyString()) { _setHoverSounds(getHoverSounds(i), i); } diff --git a/Engine/source/T3D/vehicles/vehicle.cpp b/Engine/source/T3D/vehicles/vehicle.cpp index b773dd58f..8079fc163 100644 --- a/Engine/source/T3D/vehicles/vehicle.cpp +++ b/Engine/source/T3D/vehicles/vehicle.cpp @@ -80,6 +80,28 @@ static U32 sTriggerMask = ItemObjectType | IMPLEMENT_CONOBJECT(VehicleData); +typedef VehicleData::Body::Sounds bodySounds; +DefineEnumType(bodySounds); + +ImplementEnumType(bodySounds, "enum types.\n" + "@ingroup VehicleData\n\n") + { VehicleData::Body::SoftImpactSound, "SoftImpactSound", "..." }, + { VehicleData::Body::HardImpactSound, "HardImpactSound", "..." }, +EndImplementEnumType; + + +typedef VehicleData::Sounds vehSoundsEnum; +DefineEnumType(vehSoundsEnum); + +ImplementEnumType(vehSoundsEnum, "enum types.\n" + "@ingroup VehicleData\n\n") + { VehicleData::ExitWater, "ExitWater", "..." }, + { VehicleData::ImpactSoft, "ImpactSoft", "..." }, + { VehicleData::ImpactMedium, "ImpactMedium", "..." }, + { VehicleData::ImpactHard, "ImpactHard", "..." }, + { VehicleData::Wake, "Wake", "..." }, +EndImplementEnumType; + ConsoleDocClass( VehicleData, "@brief Base properties shared by all Vehicles (FlyingVehicle, HoverVehicle, " "WheeledVehicle).\n\n" @@ -219,7 +241,7 @@ bool VehicleData::preload(bool server, String &errorStr) if (!server) { for (S32 i = 0; i < Body::MaxSounds; i++) { - if (mVehicleBodySounds[i]) + if (getVehicleBodySounds(i) != StringTable->EmptyString() ) { _setVehicleBodySounds(getVehicleBodySounds(i), i); } @@ -227,7 +249,7 @@ bool VehicleData::preload(bool server, String &errorStr) for (S32 j = 0; j < Sounds::MaxSounds; j++) { - if (mVehicleWaterSounds[j]) + if (getVehicleWaterSounds(j) != StringTable->EmptyString()) { _setVehicleWaterSounds(getVehicleWaterSounds(j), j); } @@ -503,7 +525,7 @@ void VehicleData::initPersistFields() "Collision friction coefficient.\nHow well this object will slide against " "objects it collides with." ); - INITPERSISTFIELD_SOUNDASSET_ARRAY(VehicleBodySounds, Body::Sounds::MaxSounds, VehicleData, "Sounds for vehicle body impacts."); + INITPERSISTFIELD_SOUNDASSET_ENUMED(VehicleBodySounds, bodySounds, Body::Sounds::MaxSounds, VehicleData, "Sounds for vehicle body impacts."); addField( "minImpactSpeed", TypeF32, Offset(minImpactSpeed, VehicleData), "Minimum collision speed for the onImpact callback to be invoked." ); @@ -601,7 +623,7 @@ void VehicleData::initPersistFields() "Minimum velocity when entering the water for the imapactWaterHard sound " "to play.\n\n@see impactWaterHard" ); - INITPERSISTFIELD_SOUNDASSET_ARRAY(WaterSounds, Sounds::MaxSounds, VehicleData, "Sounds for interacting with water."); + INITPERSISTFIELD_SOUNDASSET_ENUMED(WaterSounds, vehSoundsEnum, VehicleData::Sounds::MaxSounds, VehicleData, "Sounds for interacting with water."); addField( "collDamageThresholdVel", TypeF32, Offset(collDamageThresholdVel, VehicleData), "Minimum collision velocity to cause damage to this vehicle.\nCurrently unused." ); diff --git a/Engine/source/T3D/vehicles/wheeledVehicle.cpp b/Engine/source/T3D/vehicles/wheeledVehicle.cpp index 3fbde4af7..4e9e7201e 100644 --- a/Engine/source/T3D/vehicles/wheeledVehicle.cpp +++ b/Engine/source/T3D/vehicles/wheeledVehicle.cpp @@ -289,6 +289,17 @@ ConsoleDocClass( WheeledVehicleData, "@ingroup Vehicles\n" ); +typedef WheeledVehicleData::Sounds wheelSoundsEnum; +DefineEnumType(wheelSoundsEnum); + +ImplementEnumType(wheelSoundsEnum, "enum types.\n" + "@ingroup WheeledVehicleData\n\n") + {WheeledVehicleData::JetSound, "JetSound", "..." }, + {WheeledVehicleData::EngineSound, "EngineSound", "..." }, + {WheeledVehicleData::SquealSound, "SquealSound", "..." }, + {WheeledVehicleData::WheelImpactSound, "WheelImpactSound", "..." }, +EndImplementEnumType; + WheeledVehicleData::WheeledVehicleData() { tireEmitter = 0; @@ -335,7 +346,7 @@ bool WheeledVehicleData::preload(bool server, String &errorStr) if (!server) { for (S32 i = 0; i < MaxSounds; i++) { - if (mWheeledVehicleSounds[i]) + if (getWheeledVehicleSounds(i) != StringTable->EmptyString()) { _setWheeledVehicleSounds(getWheeledVehicleSounds(i), i); } @@ -437,7 +448,7 @@ bool WheeledVehicleData::mirrorWheel(Wheel* we) void WheeledVehicleData::initPersistFields() { - INITPERSISTFIELD_SOUNDASSET_ARRAY(WheeledVehicleSounds, Sounds::MaxSounds, WheeledVehicleData, "Sounds related to wheeled vehicle."); + INITPERSISTFIELD_SOUNDASSET_ENUMED(WheeledVehicleSounds, wheelSoundsEnum, MaxSounds, WheeledVehicleData, "Sounds related to wheeled vehicle."); addField("tireEmitter",TYPEID< ParticleEmitterData >(), Offset(tireEmitter, WheeledVehicleData), "ParticleEmitterData datablock used to generate particles from each wheel " diff --git a/Engine/source/T3D/vehicles/wheeledVehicle.h b/Engine/source/T3D/vehicles/wheeledVehicle.h index 2f37b6c13..a2ab03b11 100644 --- a/Engine/source/T3D/vehicles/wheeledVehicle.h +++ b/Engine/source/T3D/vehicles/wheeledVehicle.h @@ -118,6 +118,7 @@ struct WheeledVehicleData: public VehicleData WheelImpactSound, MaxSounds, }; + DECLARE_SOUNDASSET_ARRAY(WheeledVehicleData, WheeledVehicleSounds, Sounds::MaxSounds); DECLARE_SOUNDASSET_ARRAY_SETGET(WheeledVehicleData, WheeledVehicleSounds);