Merge pull request #579 from Areloch/PrecipdataSoundConvert

Converts precipitationData to use sound asset macros
This commit is contained in:
Brian Roberts 2021-09-19 01:56:43 -05:00 committed by GitHub
commit c055276d21
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 74 additions and 39 deletions

View file

@ -127,7 +127,7 @@ ConsoleDocClass( PrecipitationData,
//---------------------------------------------------------- //----------------------------------------------------------
PrecipitationData::PrecipitationData() PrecipitationData::PrecipitationData()
{ {
soundProfile = NULL; INIT_SOUNDASSET(Sound);
INIT_IMAGEASSET(Drop); INIT_IMAGEASSET(Drop);
@ -143,8 +143,7 @@ PrecipitationData::PrecipitationData()
void PrecipitationData::initPersistFields() void PrecipitationData::initPersistFields()
{ {
addField( "soundProfile", TYPEID< SFXTrack >(), Offset(soundProfile, PrecipitationData), INITPERSISTFIELD_SOUNDASSET(Sound, PrecipitationData, "Looping SFXProfile effect to play while Precipitation is active.");
"Looping SFXProfile effect to play while Precipitation is active." );
addProtectedField( "dropTexture", TypeFilename, Offset(mDropName, PrecipitationData), &_setDropData, &defaultProtectedGetFn, addProtectedField( "dropTexture", TypeFilename, Offset(mDropName, PrecipitationData), &_setDropData, &defaultProtectedGetFn,
"@brief Texture filename for drop particles.\n\n" "@brief Texture filename for drop particles.\n\n"
@ -190,7 +189,7 @@ bool PrecipitationData::preload( bool server, String &errorStr )
if( Parent::preload( server, errorStr) == false) if( Parent::preload( server, errorStr) == false)
return false; return false;
if( !server && !sfxResolve( &soundProfile, errorStr ) ) if (!server && !getSFXProfile())
return false; return false;
return true; return true;
@ -200,7 +199,7 @@ void PrecipitationData::packData(BitStream* stream)
{ {
Parent::packData(stream); Parent::packData(stream);
sfxWrite( stream, soundProfile ); PACKDATA_SOUNDASSET(Sound);
PACKDATA_IMAGEASSET(Drop); PACKDATA_IMAGEASSET(Drop);
@ -217,7 +216,7 @@ void PrecipitationData::unpackData(BitStream* stream)
{ {
Parent::unpackData(stream); Parent::unpackData(stream);
sfxRead( stream, &soundProfile ); UNPACKDATA_SOUNDASSET(Sound);
UNPACKDATA_IMAGEASSET(Drop); UNPACKDATA_IMAGEASSET(Drop);
@ -598,9 +597,9 @@ bool Precipitation::onNewDataBlock( GameBaseData *dptr, bool reload )
{ {
SFX_DELETE( mAmbientSound ); SFX_DELETE( mAmbientSound );
if ( mDataBlock->soundProfile ) if ( mDataBlock->getSFXProfile())
{ {
mAmbientSound = SFX->createSource( mDataBlock->soundProfile, &getTransform() ); mAmbientSound = SFX->createSource(mDataBlock->getSFXProfile(), &getTransform() );
if ( mAmbientSound ) if ( mAmbientSound )
mAmbientSound->play(); mAmbientSound->play();
} }

View file

@ -34,8 +34,9 @@
#endif #endif
#include "T3D/assets/ImageAsset.h" #include "T3D/assets/ImageAsset.h"
#include "T3D/assets/SoundAsset.h"
class SFXTrack; //class SFXTrack;
class SFXSource; class SFXSource;
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
@ -45,30 +46,39 @@ class PrecipitationData : public GameBaseData
typedef GameBaseData Parent; typedef GameBaseData Parent;
public: public:
SFXTrack* soundProfile; //SFXTrack* soundProfile;
DECLARE_SOUNDASSET(PrecipitationData, Sound);
DECLARE_SOUNDASSET_SETGET(PrecipitationData, Sound);
DECLARE_IMAGEASSET(PrecipitationData, Drop, onDropChanged, GFXStaticTextureSRGBProfile); ///< Texture for drop particles DECLARE_IMAGEASSET(PrecipitationData, Drop, onDropChanged, GFXStaticTextureSRGBProfile); ///< Texture for drop particles
DECLARE_IMAGEASSET_SETGET(PrecipitationData, Drop); DECLARE_IMAGEASSET_SETGET(PrecipitationData, Drop);
StringTableEntry mDropShaderName; ///< The name of the shader used for raindrops StringTableEntry mDropShaderName; ///< The name of the shader used for raindrops
DECLARE_IMAGEASSET(PrecipitationData, Splash, onSplashChanged, GFXStaticTextureSRGBProfile); ///< Texture for splash particles DECLARE_IMAGEASSET(PrecipitationData, Splash, onSplashChanged, GFXStaticTextureSRGBProfile); ///< Texture for splash particles
DECLARE_IMAGEASSET_SETGET(PrecipitationData, Splash); DECLARE_IMAGEASSET_SETGET(PrecipitationData, Splash);
StringTableEntry mSplashShaderName; ///< The name of the shader used for raindrops StringTableEntry mSplashShaderName; ///< The name of the shader used for raindrops
S32 mDropsPerSide; ///< How many drops are on a side of the raindrop texture. S32 mDropsPerSide; ///< How many drops are on a side of the raindrop texture.
S32 mSplashesPerSide; ///< How many splash are on a side of the splash texture. S32 mSplashesPerSide; ///< How many splash are on a side of the splash texture.
PrecipitationData(); PrecipitationData();
DECLARE_CONOBJECT(PrecipitationData); DECLARE_CONOBJECT(PrecipitationData);
bool preload( bool server, String& errorStr ); bool preload( bool server, String& errorStr );
static void initPersistFields(); static void initPersistFields();
virtual void packData(BitStream* stream); virtual void packData(BitStream* stream);
virtual void unpackData(BitStream* stream); virtual void unpackData(BitStream* stream);
void onDropChanged() {} void onDropChanged() {}
void onSplashChanged() {} void onSplashChanged() {}
SFXProfile* getSFXProfile() {
if (mSoundAsset.notNull())
return mSoundAsset->getSfxProfile();
else
return NULL;
}
}; };
struct Raindrop struct Raindrop

View file

@ -919,7 +919,7 @@ T3Dpre4ProjectImporter::genProcessor("DebrisData", "shape shapeAsset shapeFile s
T3Dpre4ProjectImporter::genProcessor("DecalData", "material materialAsset"); T3Dpre4ProjectImporter::genProcessor("DecalData", "material materialAsset");
T3Dpre4ProjectImporter::genProcessor("ExplosionData", "explosionShape explosionShapeAsset"); T3Dpre4ProjectImporter::genProcessor("ExplosionData", "explosionShape explosionShapeAsset");
T3Dpre4ProjectImporter::genProcessor("ParticleData", "texture textureAsset textureName textureAsset textureExt textureExtAsset textureExtName textureExtAsset"); T3Dpre4ProjectImporter::genProcessor("ParticleData", "texture textureAsset textureName textureAsset textureExt textureExtAsset textureExtName textureExtAsset");
T3Dpre4ProjectImporter::genProcessor("PrecipitationData", "drop dropAsset dropTexture dropAsset splash splashAsset splashTexture splashAsset"); T3Dpre4ProjectImporter::genProcessor("PrecipitationData", "drop dropAsset dropTexture dropAsset splash splashAsset splashTexture splashAsset soundProfile soundAsset");
T3Dpre4ProjectImporter::genProcessor("SplashData", "texture textureAsset"); T3Dpre4ProjectImporter::genProcessor("SplashData", "texture textureAsset");
T3Dpre4ProjectImporter::genProcessor("LightFlareData", "flareTexture flareTextureAsset"); T3Dpre4ProjectImporter::genProcessor("LightFlareData", "flareTexture flareTextureAsset");
T3Dpre4ProjectImporter::genProcessor("PhysicsDebrisData", "shape shapeAsset shapeFile shapeAsset"); T3Dpre4ProjectImporter::genProcessor("PhysicsDebrisData", "shape shapeAsset shapeFile shapeAsset");

View file

@ -556,23 +556,49 @@ function processLegacyField(%line, %originalFieldName, %newFieldName)
%targetFilename = sanitizeFilename(%value); %targetFilename = sanitizeFilename(%value);
if(isObject(%targetFilename)) if(isObject(%targetFilename))
{
if(%originalFieldName $= "soundProfile")
{ {
//likely a material name, so handle it that way $ProjectImporter::assetQuery.clear();
%assetId = MaterialAsset::getAssetIdByMaterialName(%targetFilename); %foundAssets = AssetDatabase.findAssetName($ProjectImporter::assetQuery, %targetFilename);
if(%foundAssets != 0)
{
%assetId = $ProjectImporter::assetQuery.getAsset(0);
}
}
else
{
//likely a material name, so handle it that way
%assetId = MaterialAsset::getAssetIdByMaterialName(%targetFilename);
}
} }
else else
{ {
if(!isFile(%targetFilename)) if(!isFile(%targetFilename))
{ {
error("Legacy Project Importer - file described in line could not be found/is not valid"); if(%originalFieldName $= "soundProfile")
return %line; {
} $ProjectImporter::assetQuery.clear();
%foundAssets = AssetDatabase.findAssetName($ProjectImporter::assetQuery, %targetFilename);
$ProjectImporter::assetQuery.clear(); if(%foundAssets != 0)
%foundAssets = AssetDatabase.findAssetLooseFile($ProjectImporter::assetQuery, %targetFilename); {
if(%foundAssets != 0) %assetId = $ProjectImporter::assetQuery.getAsset(0);
{ }
%assetId = $ProjectImporter::assetQuery.getAsset(0); }
else
{
error("Legacy Project Importer - file described in line could not be found/is not valid");
return %line;
}
}
else
{
$ProjectImporter::assetQuery.clear();
%foundAssets = AssetDatabase.findAssetLooseFile($ProjectImporter::assetQuery, %targetFilename);
if(%foundAssets != 0)
{
%assetId = $ProjectImporter::assetQuery.getAsset(0);
}
} }
} }