Updates the rest of the asset types to utilize separate expanded path variables to avoid breaking assetDef saving

Fixes select mode for the Asset Browser to properly filter to the selecting type
Fixes the imageType in the asset import window inspector to properly set to the importing image asset's discovered type if valid
Fixes AssetBrowser asset selection return so it returns back a valid assetId
Fixes TerrainMaterial save crash by ensuring we fill in the diffuseMapAsset
Removes saving of TerrainMaterial being saved to a generic script file if one isn't found for an existing TerrainMaterialAssets
This commit is contained in:
Areloch 2020-08-09 01:32:27 -05:00
parent 08f8d8abf2
commit 79ecc2f4a0
30 changed files with 241 additions and 106 deletions

View file

@ -93,6 +93,8 @@ CppAsset::CppAsset() : AssetBase()
{
mCodeFile = StringTable->EmptyString();
mHeaderFile = StringTable->EmptyString();
mCodePath = StringTable->EmptyString();
mHeaderPath = StringTable->EmptyString();
}
//-----------------------------------------------------------------------------
@ -164,7 +166,14 @@ void CppAsset::setHeaderFile(const char* pHeaderFile)
void CppAsset::initializeAsset()
{
mCodeFile = expandAssetFilePath(mCodeFile);
mCodePath = getOwned() ? expandAssetFilePath(mCodeFile) : mCodePath;
mHeaderFile = expandAssetFilePath(mHeaderFile);
mHeaderPath = getOwned() ? expandAssetFilePath(mHeaderFile) : mHeaderPath;
}
void CppAsset::onAssetRefresh(void)
{
mCodePath = getOwned() ? expandAssetFilePath(mCodeFile) : mCodePath;
mHeaderPath = getOwned() ? expandAssetFilePath(mHeaderFile) : mHeaderPath;
}

View file

@ -45,7 +45,9 @@ class CppAsset : public AssetBase
typedef AssetBase Parent;
StringTableEntry mCodeFile;
StringTableEntry mCodePath;
StringTableEntry mHeaderFile;
StringTableEntry mHeaderPath;
public:
CppAsset();
@ -66,11 +68,14 @@ public:
protected:
virtual void initializeAsset(void);
virtual void onAssetRefresh(void) {};
virtual void onAssetRefresh(void);
static bool setCppFile(void *obj, const char *index, const char *data) { static_cast<CppAsset*>(obj)->setCppFile(data); return false; }
static const char* getCppFile(void* obj, const char* data) { return static_cast<CppAsset*>(obj)->getCppFile(); }
inline StringTableEntry getCppFilePath(void) const { return mCodePath; };
inline StringTableEntry getHeaderFilePath(void) const { return mHeaderPath; };
static bool setHeaderFile(void *obj, const char *index, const char *data) { static_cast<CppAsset*>(obj)->setHeaderFile(data); return false; }
static const char* getHeaderFile(void* obj, const char* data) { return static_cast<CppAsset*>(obj)->getHeaderFile(); }
};

View file

@ -86,6 +86,9 @@ GUIAsset::GUIAsset()
{
mScriptFile = StringTable->EmptyString();
mGUIFile = StringTable->EmptyString();
mScriptPath = StringTable->EmptyString();
mGUIPath = StringTable->EmptyString();
}
//-----------------------------------------------------------------------------
@ -118,28 +121,28 @@ void GUIAsset::copyTo(SimObject* object)
void GUIAsset::initializeAsset()
{
mGUIFile = expandAssetFilePath(mGUIFile);
mGUIPath = expandAssetFilePath(mGUIFile);
if (Platform::isFile(mGUIFile))
Con::executeFile(mGUIFile, false, false);
if (Platform::isFile(mGUIPath))
Con::executeFile(mGUIPath, false, false);
mScriptFile = expandAssetFilePath(mScriptFile);
mScriptPath = expandAssetFilePath(mScriptFile);
if (Platform::isFile(mScriptFile))
Con::executeFile(mScriptFile, false, false);
if (Platform::isFile(mScriptPath))
Con::executeFile(mScriptPath, false, false);
}
void GUIAsset::onAssetRefresh()
{
mGUIFile = expandAssetFilePath(mGUIFile);
mGUIPath = expandAssetFilePath(mGUIFile);
if (Platform::isFile(mGUIFile))
Con::executeFile(mGUIFile, false, false);
if (Platform::isFile(mGUIPath))
Con::executeFile(mGUIPath, false, false);
mScriptFile = expandAssetFilePath(mScriptFile);
mScriptPath = expandAssetFilePath(mScriptFile);
if (Platform::isFile(mScriptFile))
Con::executeFile(mScriptFile, false, false);
if (Platform::isFile(mScriptPath))
Con::executeFile(mScriptPath, false, false);
}
void GUIAsset::setGUIFile(const char* pScriptFile)
@ -155,7 +158,7 @@ void GUIAsset::setGUIFile(const char* pScriptFile)
return;
// Update.
mGUIFile = getOwned() ? expandAssetFilePath(pScriptFile) : StringTable->insert(pScriptFile);
mGUIFile = StringTable->insert(pScriptFile);
// Refresh the asset.
refreshAsset();
@ -174,7 +177,7 @@ void GUIAsset::setScriptFile(const char* pScriptFile)
return;
// Update.
mScriptFile = getOwned() ? expandAssetFilePath(pScriptFile) : StringTable->insert(pScriptFile);
mScriptFile = StringTable->insert(pScriptFile);
// Refresh the asset.
refreshAsset();

View file

@ -49,6 +49,9 @@ class GUIAsset : public AssetBase
StringTableEntry mScriptFile;
StringTableEntry mGUIFile;
StringTableEntry mScriptPath;
StringTableEntry mGUIPath;
public:
GUIAsset();
virtual ~GUIAsset();
@ -65,6 +68,9 @@ public:
void setScriptFile(const char* pScriptFile);
inline StringTableEntry getScriptFile(void) const { return mScriptFile; };
inline StringTableEntry getGUIPath(void) const { return mGUIPath; };
inline StringTableEntry getScriptPath(void) const { return mScriptPath; };
protected:
virtual void initializeAsset(void);
virtual void onAssetRefresh(void);

View file

@ -95,6 +95,8 @@ GameObjectAsset::GameObjectAsset()
mGameObjectName = StringTable->EmptyString();
mScriptFile = StringTable->EmptyString();
mTAMLFile = StringTable->EmptyString();
mScriptPath = StringTable->EmptyString();
mTAMLPath = StringTable->EmptyString();
}
//-----------------------------------------------------------------------------
@ -129,25 +131,23 @@ void GameObjectAsset::copyTo(SimObject* object)
void GameObjectAsset::initializeAsset()
{
//Ensure we have an expanded filepath
if (!Platform::isFullPath(mScriptFile))
mScriptFile = getOwned() ? expandAssetFilePath(mScriptFile) : mScriptFile;
mScriptPath = getOwned() ? expandAssetFilePath(mScriptFile) : mScriptPath;
if (Platform::isFile(mScriptFile))
Con::executeFile(mScriptFile, false, false);
if (Platform::isFile(mScriptPath))
Con::executeFile(mScriptPath, false, false);
if (!Platform::isFullPath(mTAMLFile))
mTAMLFile = getOwned() ? expandAssetFilePath(mTAMLFile) : mTAMLFile;
mTAMLPath = getOwned() ? expandAssetFilePath(mTAMLFile) : mTAMLPath;
}
void GameObjectAsset::onAssetRefresh()
{
//Ensure we have an expanded filepath
mScriptFile = expandAssetFilePath(mScriptFile);
mScriptPath = getOwned() ? expandAssetFilePath(mScriptFile) : mScriptPath;
if (Platform::isFile(mScriptFile))
Con::executeFile(mScriptFile, false, false);
if (Platform::isFile(mScriptPath))
Con::executeFile(mScriptPath, false, false);
mTAMLFile = expandAssetFilePath(mTAMLFile);
mTAMLPath = getOwned() ? expandAssetFilePath(mTAMLFile) : mTAMLPath;
}
void GameObjectAsset::setScriptFile(const char* pScriptFile)

View file

@ -50,6 +50,8 @@ class GameObjectAsset : public AssetBase
StringTableEntry mGameObjectName;
StringTableEntry mScriptFile;
StringTableEntry mTAMLFile;
StringTableEntry mScriptPath;
StringTableEntry mTAMLPath;
public:
GameObjectAsset();
@ -77,6 +79,9 @@ protected:
static const char* getScriptFile(void* obj, const char* data) { return static_cast<GameObjectAsset*>(obj)->getScriptFile(); }
static bool setTAMLFile(void *obj, const char *index, const char *data) { static_cast<GameObjectAsset*>(obj)->setTAMLFile(data); return false; }
static const char* getTAMLFile(void* obj, const char* data) { return static_cast<GameObjectAsset*>(obj)->getTAMLFile(); }
inline StringTableEntry getScriptFilePath(void) const { return mScriptPath; };
inline StringTableEntry getTAMLFilePath(void) const { return mTAMLPath; };
};
DefineConsoleType(TypeGameObjectAssetPtr, GameObjectAsset)

View file

@ -108,6 +108,7 @@ EndImplementEnumType;
ImageAsset::ImageAsset() : AssetBase(), mImage(nullptr), mUseMips(true), mIsHDRImage(false), mIsValidImage(false), mImageType(Albedo)
{
mImageFileName = StringTable->EmptyString();
mImagePath = StringTable->EmptyString();
}
//-----------------------------------------------------------------------------
@ -254,14 +255,16 @@ void ImageAsset::loadImage()
void ImageAsset::initializeAsset()
{
mImageFileName = expandAssetFilePath(mImageFileName);
mImagePath = expandAssetFilePath(mImageFileName);
loadImage();
}
void ImageAsset::onAssetRefresh()
{
setImageFileName(mImageFileName);
mImagePath = expandAssetFilePath(mImageFileName);
loadImage();
}
void ImageAsset::setImageFileName(const char* pScriptFile)

View file

@ -70,6 +70,7 @@ public:
protected:
StringTableEntry mImageFileName;
StringTableEntry mImagePath;
GFXTexHandle mImage;
@ -95,6 +96,8 @@ public:
void setImageFileName(const char* pScriptFile);
inline StringTableEntry getImageFileName(void) const { return mImageFileName; };
inline StringTableEntry getImagePath(void) const { return mImagePath; };
bool isValid() { return mIsValidImage; }
GFXTexHandle getImage(GFXTextureProfile requestedProfile);

View file

@ -92,6 +92,13 @@ LevelAsset::LevelAsset() : AssetBase(), mIsSubLevel(false)
mForestFile = StringTable->EmptyString();
mNavmeshFile = StringTable->EmptyString();
mLevelPath = StringTable->EmptyString();
mPreviewImagePath = StringTable->EmptyString();
mPostFXPresetPath = StringTable->EmptyString();
mDecalsPath = StringTable->EmptyString();
mForestPath = StringTable->EmptyString();
mNavmeshPath = StringTable->EmptyString();
mGamemodeName = StringTable->EmptyString();
mMainLevelAsset = StringTable->EmptyString();
@ -151,12 +158,23 @@ void LevelAsset::initializeAsset()
Parent::initializeAsset();
// Ensure the image-file is expanded.
mPreviewImage = expandAssetFilePath(mPreviewImage);
mLevelFile = expandAssetFilePath(mLevelFile);
mPostFXPresetFile = expandAssetFilePath(mPostFXPresetFile);
mDecalsFile = expandAssetFilePath(mDecalsFile);
mForestFile = expandAssetFilePath(mForestFile);
mNavmeshFile = expandAssetFilePath(mNavmeshFile);
mPreviewImagePath = expandAssetFilePath(mPreviewImage);
mLevelPath = expandAssetFilePath(mLevelFile);
mPostFXPresetPath = expandAssetFilePath(mPostFXPresetFile);
mDecalsPath = expandAssetFilePath(mDecalsFile);
mForestPath = expandAssetFilePath(mForestFile);
mNavmeshPath = expandAssetFilePath(mNavmeshFile);
}
void LevelAsset::onAssetRefresh(void)
{
// Ensure the image-file is expanded.
mPreviewImagePath = expandAssetFilePath(mPreviewImage);
mLevelPath = expandAssetFilePath(mLevelFile);
mPostFXPresetPath = expandAssetFilePath(mPostFXPresetFile);
mDecalsPath = expandAssetFilePath(mDecalsFile);
mForestPath = expandAssetFilePath(mForestFile);
mNavmeshPath = expandAssetFilePath(mNavmeshFile);
}
//

View file

@ -52,6 +52,13 @@ class LevelAsset : public AssetBase
StringTableEntry mNavmeshFile;
StringTableEntry mPreviewImage;
StringTableEntry mLevelPath;
StringTableEntry mPostFXPresetPath;
StringTableEntry mDecalsPath;
StringTableEntry mForestPath;
StringTableEntry mNavmeshPath;
StringTableEntry mPreviewImagePath;
StringTableEntry mEditorFile;
StringTableEntry mBakedSceneFile;
@ -84,6 +91,13 @@ public:
void setImageFile(const char* pImageFile);
inline StringTableEntry getImageFile(void) const { return mPreviewImage; };
inline StringTableEntry getLevelPath(void) const { return mLevelPath; };
inline StringTableEntry getPostFXPresetPath(void) const { return mPostFXPresetPath; };
inline StringTableEntry getDecalsPath(void) const { return mDecalsPath; };
inline StringTableEntry getForestPath(void) const { return mForestPath; };
inline StringTableEntry getNavmeshPath(void) const { return mNavmeshPath; };
inline StringTableEntry getImagePath(void) const { return mPreviewImagePath; };
void setEditorFile(const char* pEditorFile);
inline StringTableEntry getEditorFile(void) const { return mEditorFile; };
void setBakedSceneFile(const char* pBakedSceneFile);
@ -114,7 +128,7 @@ protected:
virtual void initializeAsset(void);
virtual void onAssetRefresh(void) {}
virtual void onAssetRefresh(void);
};
DefineConsoleType(TypeLevelAssetPtr, LevelAsset)

View file

@ -91,6 +91,7 @@ MaterialAsset::MaterialAsset()
{
mShaderGraphFile = "";
mScriptFile = StringTable->EmptyString();
mScriptPath = StringTable->EmptyString();
mMatDefinitionName = StringTable->EmptyString();
}
@ -121,19 +122,18 @@ void MaterialAsset::initializeAsset()
compileShader();
if (!Platform::isFullPath(mScriptFile))
mScriptFile = getOwned() ? expandAssetFilePath(mScriptFile) : mScriptFile;
mScriptPath = getOwned() ? expandAssetFilePath(mScriptFile) : mScriptPath;
if (Platform::isFile(mScriptFile))
Con::executeFile(mScriptFile, false, false);
if (Platform::isFile(mScriptPath))
Con::executeFile(mScriptPath, false, false);
}
void MaterialAsset::onAssetRefresh()
{
mScriptFile = expandAssetFilePath(mScriptFile);
mScriptPath = getOwned() ? expandAssetFilePath(mScriptFile) : mScriptPath;
if (Platform::isFile(mScriptFile))
Con::executeFile(mScriptFile, false, false);
if (Platform::isFile(mScriptPath))
Con::executeFile(mScriptPath, false, false);
if (mMatDefinitionName != StringTable->EmptyString())
{

View file

@ -57,6 +57,7 @@ class MaterialAsset : public AssetBase
String mShaderGraphFile;
StringTableEntry mScriptFile;
StringTableEntry mScriptPath;
StringTableEntry mMatDefinitionName;
public:
@ -74,6 +75,8 @@ public:
void setScriptFile(const char* pScriptFile);
inline StringTableEntry getScriptFile(void) const { return mScriptFile; };
inline StringTableEntry getScriptPath(void) const { return mScriptPath; };
/// Declare Console Object.
DECLARE_CONOBJECT(MaterialAsset);

View file

@ -95,6 +95,10 @@ PostEffectAsset::PostEffectAsset()
mScriptFile = StringTable->EmptyString();
mHLSLShaderFile = StringTable->EmptyString();
mGLSLShaderFile = StringTable->EmptyString();
mScriptPath = StringTable->EmptyString();
mHLSLShaderPath = StringTable->EmptyString();
mGLSLShaderPath = StringTable->EmptyString();
}
//-----------------------------------------------------------------------------
@ -128,22 +132,22 @@ void PostEffectAsset::copyTo(SimObject* object)
void PostEffectAsset::initializeAsset()
{
mScriptFile = expandAssetFilePath(mScriptFile);
mHLSLShaderFile = expandAssetFilePath(mHLSLShaderFile);
mGLSLShaderFile = expandAssetFilePath(mGLSLShaderFile);
mScriptPath = expandAssetFilePath(mScriptFile);
mHLSLShaderPath = expandAssetFilePath(mHLSLShaderFile);
mGLSLShaderPath = expandAssetFilePath(mGLSLShaderFile);
if (Platform::isFile(mScriptFile))
Con::executeFile(mScriptFile, false, false);
if (Platform::isFile(mScriptPath))
Con::executeFile(mScriptPath, false, false);
}
void PostEffectAsset::onAssetRefresh()
{
mScriptFile = expandAssetFilePath(mScriptFile);
mHLSLShaderFile = expandAssetFilePath(mHLSLShaderFile);
mGLSLShaderFile = expandAssetFilePath(mGLSLShaderFile);
mScriptPath = expandAssetFilePath(mScriptFile);
mHLSLShaderPath = expandAssetFilePath(mHLSLShaderFile);
mGLSLShaderPath = expandAssetFilePath(mGLSLShaderFile);
if (Platform::isFile(mScriptFile))
Con::executeFile(mScriptFile, false, false);
if (Platform::isFile(mScriptPath))
Con::executeFile(mScriptPath, false, false);
}
void PostEffectAsset::setScriptFile(const char* pScriptFile)

View file

@ -49,6 +49,10 @@ class PostEffectAsset : public AssetBase
StringTableEntry mScriptFile;
StringTableEntry mHLSLShaderFile;
StringTableEntry mGLSLShaderFile;
StringTableEntry mScriptPath;
StringTableEntry mHLSLShaderPath;
StringTableEntry mGLSLShaderPath;
public:
PostEffectAsset();
@ -66,6 +70,10 @@ public:
void setGLSLShaderFile(const char* pShaderFile);
inline StringTableEntry getGLSLShaderFile(void) const { return mGLSLShaderFile; };
inline StringTableEntry getScriptPath(void) const { return mScriptPath; };
inline StringTableEntry getHLSLShaderPath(void) const { return mHLSLShaderPath; };
inline StringTableEntry getGLSLShaderPath(void) const { return mGLSLShaderPath; };
/// Declare Console Object.
DECLARE_CONOBJECT(PostEffectAsset);

View file

@ -92,6 +92,7 @@ ConsoleSetType(TypeScriptAssetPtr)
ScriptAsset::ScriptAsset() : AssetBase(), mIsServerSide(true)
{
mScriptFile = StringTable->EmptyString();
mScriptPath = StringTable->EmptyString();
}
//-----------------------------------------------------------------------------
@ -121,9 +122,9 @@ void ScriptAsset::copyTo(SimObject* object)
void ScriptAsset::initializeAsset()
{
mScriptFile = expandAssetFilePath(mScriptFile);
mScriptPath = expandAssetFilePath(mScriptFile);
if (Platform::isFile(mScriptFile))
if (Platform::isFile(mScriptPath))
{
//We're initialized properly, so we'll go ahead and kick along any dependencies we may have as well
AssetManager::typeAssetDependsOnHash::Iterator assetDependenciesItr = mpOwningAssetManager->getDependedOnAssets()->find(mpAssetDefinition->mAssetId);
@ -143,15 +144,15 @@ void ScriptAsset::initializeAsset()
}
}
Con::executeFile(mScriptFile, false, false);
Con::executeFile(mScriptPath, false, false);
}
}
void ScriptAsset::onAssetRefresh()
{
mScriptFile = expandAssetFilePath(mScriptFile);
mScriptPath = expandAssetFilePath(mScriptFile);
if (Platform::isFile(mScriptFile))
if (Platform::isFile(mScriptPath))
{
//Refresh any dependencies we may have
for (U32 i = 0; i < mScriptAssets.size(); i++)
@ -159,7 +160,7 @@ void ScriptAsset::onAssetRefresh()
mScriptAssets[i]->onAssetRefresh();
}
Con::executeFile(mScriptFile, false, false);
Con::executeFile(mScriptPath, false, false);
}
}
@ -176,7 +177,7 @@ void ScriptAsset::setScriptFile(const char* pScriptFile)
return;
// Update.
mScriptFile = getOwned() ? expandAssetFilePath(pScriptFile) : StringTable->insert(pScriptFile);
mScriptFile = StringTable->insert(pScriptFile);
// Refresh the asset.
refreshAsset();
@ -191,9 +192,9 @@ bool ScriptAsset::execScript()
return false;
if (Platform::isFile(mScriptFile))
if (Platform::isFile(mScriptPath))
{
return Con::executeFile(mScriptFile, false, false);
return Con::executeFile(mScriptPath, false, false);
}
else
{

View file

@ -49,6 +49,7 @@ class ScriptAsset : public AssetBase
typedef AssetBase Parent;
StringTableEntry mScriptFile;
StringTableEntry mScriptPath;
bool mIsServerSide;
Vector<AssetPtr<ScriptAsset>> mScriptAssets;
@ -67,6 +68,8 @@ public:
void setScriptFile(const char* pScriptFile);
inline StringTableEntry getScriptFile(void) const { return mScriptFile; };
inline StringTableEntry getScriptPath(void) const { return mScriptPath; };
bool execScript();
protected:

View file

@ -96,6 +96,7 @@ ShapeAnimationAsset::ShapeAnimationAsset() :
mIsEmbedded(false), mIsCyclical(true), mIsBlend(false), mBlendFrame(0), mStartFrame(0), mEndFrame(-1), mPadRotation(true), mPadTransforms(false)
{
mFileName = StringTable->EmptyString();
mFilePath = StringTable->EmptyString();
mAnimationName = StringTable->EmptyString();
mBlendAnimAssetName = StringTable->EmptyString();
@ -146,11 +147,9 @@ void ShapeAnimationAsset::initializeAsset(void)
if (!mIsEmbedded)
{
//If we're not embedded, we need to load in our initial shape and do some prepwork
mFilePath = expandAssetFilePath(mFileName);
char filenameBuf[1024];
Con::expandScriptFilename(filenameBuf, sizeof(filenameBuf), mFileName);
mSourceShape = ResourceManager::get().load(filenameBuf);
mSourceShape = ResourceManager::get().load(mFilePath);
if (!mSourceShape->addSequence("ambient", "", mAnimationName, mStartFrame, mEndFrame, mPadRotation, mPadTransforms))
{
@ -185,7 +184,7 @@ void ShapeAnimationAsset::setAnimationFile(const char* pAnimationFile)
return;
// Update.
mFileName = getOwned() ? expandAssetFilePath(pAnimationFile) : StringTable->insert(pAnimationFile);
mFileName = StringTable->insert(pAnimationFile);
// Refresh the asset.
refreshAsset();

View file

@ -51,6 +51,7 @@ class ShapeAnimationAsset : public AssetBase
protected:
StringTableEntry mFileName;
StringTableEntry mFilePath;
bool mIsEmbedded;
bool mIsCyclical;
@ -81,6 +82,8 @@ public:
void setAnimationFile(const char* pScriptFile);
inline StringTableEntry getAnimationFile(void) const { return mFileName; };
inline StringTableEntry getAnimationPath(void) const { return mFilePath; };
/// Declare Console Object.
DECLARE_CONOBJECT(ShapeAnimationAsset);

View file

@ -93,6 +93,7 @@ ConsoleSetType(TypeSoundAssetPtr)
SoundAsset::SoundAsset()
{
mSoundFile = StringTable->EmptyString();
mSoundPath = StringTable->EmptyString();
mPitchAdjust = 0;
mVolumeAdjust = 0;
@ -130,11 +131,12 @@ void SoundAsset::copyTo(SimObject* object)
void SoundAsset::initializeAsset(void)
{
mSoundPath = expandAssetFilePath(mSoundFile);
}
void SoundAsset::onAssetRefresh(void)
{
mSoundPath = expandAssetFilePath(mSoundFile);
}
void SoundAsset::setSoundFile(const char* pSoundFile)
@ -150,7 +152,7 @@ void SoundAsset::setSoundFile(const char* pSoundFile)
return;
// Update.
mSoundFile = getOwned() ? expandAssetFilePath(pSoundFile) : StringTable->insert(pSoundFile);
mSoundFile = StringTable->insert(pSoundFile);
// Refresh the asset.
refreshAsset();

View file

@ -48,6 +48,7 @@ class SoundAsset : public AssetBase
protected:
StringTableEntry mSoundFile;
StringTableEntry mSoundPath;
F32 mPitchAdjust;
F32 mVolumeAdjust;
@ -65,6 +66,8 @@ public:
void setSoundFile(const char* pScriptFile);
inline StringTableEntry getSoundFile(void) const { return mSoundFile; };
inline StringTableEntry getSoundPath(void) const { return mSoundPath; };
protected:
virtual void initializeAsset(void);
virtual void onAssetRefresh(void);

View file

@ -124,6 +124,7 @@ ConsoleSetType(TypeTerrainAssetId)
TerrainAsset::TerrainAsset()
{
mTerrainFileName = StringTable->EmptyString();
mTerrainFilePath = StringTable->EmptyString();
}
@ -141,8 +142,8 @@ void TerrainAsset::initPersistFields()
Parent::initPersistFields();
//addField("shaderGraph", TypeRealString, Offset(mShaderGraphFile, TerrainAsset), "");
addProtectedField("terrainFile", TypeAssetLooseFilePath, Offset(mTerrainFilePath, TerrainAsset),
&setTerrainFilePath, &getTerrainFilePath, "Path to the file containing the terrain data.");
addProtectedField("terrainFile", TypeAssetLooseFilePath, Offset(mTerrainFileName, TerrainAsset),
&setTerrainFileName, &getTerrainFileName, "Path to the file containing the terrain data.");
}
void TerrainAsset::setDataField(StringTableEntry slotName, const char* array, const char* value)
@ -164,19 +165,19 @@ void TerrainAsset::initializeAsset()
// Call parent.
Parent::initializeAsset();
mTerrainFilePath = expandAssetFilePath(mTerrainFilePath);
mTerrainFilePath = expandAssetFilePath(mTerrainFileName);
loadTerrain();
}
void TerrainAsset::onAssetRefresh()
{
mTerrainFilePath = expandAssetFilePath(mTerrainFilePath);
mTerrainFilePath = expandAssetFilePath(mTerrainFileName);
loadTerrain();
}
void TerrainAsset::setTerrainFilePath(const char* pScriptFile)
void TerrainAsset::setTerrainFileName(const char* pScriptFile)
{
// Sanity!
AssertFatal(pScriptFile != NULL, "Cannot use a NULL script file.");
@ -185,7 +186,7 @@ void TerrainAsset::setTerrainFilePath(const char* pScriptFile)
pScriptFile = StringTable->insert(pScriptFile);
// Update.
mTerrainFilePath = pScriptFile;
mTerrainFileName = pScriptFile;
// Refresh the asset.
refreshAsset();
@ -259,7 +260,7 @@ bool TerrainAsset::getAssetByFilename(StringTableEntry fileName, AssetPtr<Terrai
newTerrainAsset->setAssetName(assetName.c_str());
String terrainPathBind = terrFilePath.getFileName() + terrFilePath.getExtension();
newTerrainAsset->mTerrainFilePath = StringTable->insert(terrainPathBind.c_str());
newTerrainAsset->mTerrainFileName = StringTable->insert(terrainPathBind.c_str());
newTerrainAsset->saveAsset();
@ -350,7 +351,7 @@ StringTableEntry TerrainAsset::getAssetIdByFilename(StringTableEntry fileName)
newTerrainAsset->setAssetName(assetName.c_str());
String terrainPathBind = terrFilePath.getFileName() + "." + terrFilePath.getExtension();
newTerrainAsset->mTerrainFilePath = StringTable->insert(terrainPathBind.c_str());
newTerrainAsset->mTerrainFileName = StringTable->insert(terrainPathBind.c_str());
newTerrainAsset->saveAsset();

View file

@ -58,6 +58,7 @@ class TerrainAsset : public AssetBase
{
typedef AssetBase Parent;
StringTableEntry mTerrainFileName;
StringTableEntry mTerrainFilePath;
Resource<TerrainFile> mTerrainFile;
@ -75,7 +76,8 @@ public:
virtual void setDataField(StringTableEntry slotName, const char* array, const char* value);
void setTerrainFilePath(const char* pTerrainFile);
void setTerrainFileName(const char* pTerrainFile);
inline StringTableEntry getTerrainFileName(void) const { return mTerrainFileName; };
inline StringTableEntry getTerrainFilePath(void) const { return mTerrainFilePath; };
inline Resource<TerrainFile> getTerrainResource(void) const { return mTerrainFile; };
@ -93,8 +95,8 @@ protected:
virtual void initializeAsset();
virtual void onAssetRefresh(void);
static bool setTerrainFilePath(void *obj, const char *index, const char *data) { static_cast<TerrainAsset*>(obj)->setTerrainFilePath(data); return false; }
static const char* getTerrainFilePath(void* obj, const char* data) { return static_cast<TerrainAsset*>(obj)->getTerrainFilePath(); }
static bool setTerrainFileName(void *obj, const char *index, const char *data) { static_cast<TerrainAsset*>(obj)->setTerrainFileName(data); return false; }
static const char* getTerrainFileName(void* obj, const char* data) { return static_cast<TerrainAsset*>(obj)->getTerrainFileName(); }
};
DefineConsoleType(TypeTerrainAssetPtr, TerrainAsset)

View file

@ -90,6 +90,7 @@ ConsoleSetType(TypeTerrainMaterialAssetPtr)
TerrainMaterialAsset::TerrainMaterialAsset()
{
mScriptFile = StringTable->EmptyString();
mScriptPath = StringTable->EmptyString();
mMatDefinitionName = StringTable->EmptyString();
}
@ -120,18 +121,18 @@ void TerrainMaterialAsset::initializeAsset()
compileShader();
mScriptFile = expandAssetFilePath(mScriptFile);
mScriptPath = expandAssetFilePath(mScriptFile);
if (Platform::isFile(mScriptFile))
Con::executeFile(mScriptFile, false, false);
if (Platform::isFile(mScriptPath))
Con::executeFile(mScriptPath, false, false);
}
void TerrainMaterialAsset::onAssetRefresh()
{
mScriptFile = expandAssetFilePath(mScriptFile);
mScriptPath = expandAssetFilePath(mScriptFile);
if (Platform::isFile(mScriptFile))
Con::executeFile(mScriptFile, false, false);
if (Platform::isFile(mScriptPath))
Con::executeFile(mScriptPath, false, false);
if (mMatDefinitionName != StringTable->EmptyString())
{

View file

@ -55,6 +55,7 @@ class TerrainMaterialAsset : public AssetBase
typedef AssetBase Parent;
StringTableEntry mScriptFile;
StringTableEntry mScriptPath;
StringTableEntry mMatDefinitionName;
public:
@ -72,6 +73,8 @@ public:
void setScriptFile(const char* pScriptFile);
inline StringTableEntry getScriptFile(void) const { return mScriptFile; };
inline StringTableEntry getScriptPath(void) const { return mScriptPath; };
/// Declare Console Object.
DECLARE_CONOBJECT(TerrainMaterialAsset);

View file

@ -338,7 +338,7 @@ void AssetImportObject::initPersistFields()
addField("tamlFilePath", TypeRealString, Offset(tamlFilePath, AssetImportObject), "What is the ultimate asset taml file path for this import item");
addField("imageSuffixType", TypeRealString, Offset(imageSuffixType, AssetImportObject), "Specific to ImageAsset type. What is the image asset's suffix type. Options are: Albedo, Normal, Roughness, AO, Metalness, PBRConfig");
addField("imageType", TypeRealString, Offset(imageSuffixType, AssetImportObject), "Specific to ImageAsset type. What is the image asset's suffix type. Options are: Albedo, Normal, Roughness, AO, Metalness, PBRConfig");
addField("shapeInfo", TYPEID< GuiTreeViewCtrl >(), Offset(shapeInfo, AssetImportObject), "Specific to ShapeAsset type. Processed information about the shape file. Contains numbers and lists of meshes, materials and animations");
}
@ -1821,6 +1821,10 @@ void AssetImporter::resolveAssetItemIssues(AssetImportObject* assetItem)
resetAssetValidationStatus(assetItem);
importIssues = false;
}
else if (activeImportConfig.DuplicatAutoResolution == String("UseExisting"))
{
}
}
else if (assetItem->statusType == String("MissingFile"))
{

View file

@ -93,6 +93,7 @@ ConsoleSetType(TypeStateMachineAssetPtr)
StateMachineAsset::StateMachineAsset()
{
mStateMachineFile = StringTable->EmptyString();
mStateMachinePath = StringTable->EmptyString();
}
//-----------------------------------------------------------------------------
@ -133,7 +134,7 @@ void StateMachineAsset::setStateMachineFile(const char* pStateMachineFile)
return;
// Update.
mStateMachineFile = getOwned() ? expandAssetFilePath(pStateMachineFile) : StringTable->insert(pStateMachineFile);
mStateMachineFile = StringTable->insert(pStateMachineFile);
// Refresh the asset.
refreshAsset();
@ -141,9 +142,15 @@ void StateMachineAsset::setStateMachineFile(const char* pStateMachineFile)
void StateMachineAsset::initializeAsset()
{
mStateMachineFile = expandAssetFilePath(mStateMachineFile);
mStateMachinePath = expandAssetFilePath(mStateMachineFile);
}
void StateMachineAsset::onAssetRefresh()
{
mStateMachinePath = expandAssetFilePath(mStateMachineFile);
}
DefineEngineMethod(StateMachineAsset, notifyAssetChanged, void, (),,"")
{

View file

@ -47,6 +47,7 @@ class StateMachineAsset : public AssetBase
typedef AssetBase Parent;
StringTableEntry mStateMachineFile;
StringTableEntry mStateMachinePath;
public:
StateMachineAsset();
@ -62,9 +63,11 @@ public:
void setStateMachineFile(const char* pStateMachineFile);
inline StringTableEntry getStateMachineFile(void) const { return mStateMachineFile; };
inline StringTableEntry getStateMachinePath(void) const { return mStateMachinePath; };
protected:
virtual void initializeAsset(void);
virtual void onAssetRefresh(void) {}
virtual void onAssetRefresh(void);
static bool setStateMachineFile(void *obj, const char *index, const char *data) { static_cast<StateMachineAsset*>(obj)->setStateMachineFile(data); return false; }
static const char* getStateMachineFile(void* obj, const char* data) { return static_cast<StateMachineAsset*>(obj)->getStateMachineFile(); }

View file

@ -63,7 +63,7 @@ function AssetBrowser::onWake(%this)
AssetBrowser-->previewSlider.setValue(EditorSettings.value("Assets/Browser/previewTileSize", "1.0"));
AssetBrowser.toggleAssetTypeFilter(0);
AssetBrowser-->filterAssetsButton.setEnabled(true);
}
function contentTreeTabBook::onTabSelected(%this, %tabText, %tabIndex)
@ -279,7 +279,11 @@ function AssetBrowser::showDialog( %this, %AssetTypeFilter, %selectCallback, %ta
//visibility filter
if(%AssetTypeFilter !$= "")
{
AssetBrowser.toggleAssetTypeFilter(0);
AssetBrowser-->filterAssetsButton.setEnabled(false);
}
else
{
AssetBrowser-->filterAssetsButton.setEnabled(true);
}
if(%selectCallback $= "")
@ -503,7 +507,7 @@ function AssetBrowser::buildAssetPreview( %this, %asset, %moduleName )
//%previewButton-->AssetPreviewButton.internalName = %this.previewData.assetName@"Border";
//%previewButton-->Button.extent = %previewSize.x + %previewBounds SPC %previewSize.y + 24;
%previewButton.tooltip = %this.previewData.tooltip;
%previewButton.Command = "AssetBrowser.updateSelection( $ThisControl.getParent().assetName, $ThisControl.getParent().moduleName );";
%previewButton.Command = "AssetBrowser.updateSelection( $ThisControl.assetName, $ThisControl.moduleName );";
%previewButton.altCommand = %doubleClickCommand;
//%previewButton-->AssetPreviewButton.icon = %this.previewData.previewImage;
@ -1463,11 +1467,24 @@ function AssetBrowser::doRebuildAssetArray(%this)
}
else
{
//got it.
%assetArray.add( %moduleName, %assetId );
if(%assetType !$= "Folder")
%finalAssetCount++;
if(AssetBrowser.assetTypeFilter !$= "")
{
if(AssetBrowser.assetTypeFilter $= %assetType)
{
%assetArray.add( %moduleName, %assetId );
if(%assetType !$= "Folder")
%finalAssetCount++;
}
}
else
{
//got it.
%assetArray.add( %moduleName, %assetId );
if(%assetType !$= "Folder")
%finalAssetCount++;
}
}
}
}

View file

@ -11,7 +11,7 @@ function AssetBrowser::prepareImportImageAsset(%this, %assetItem)
}
else
{
%suffixPos = strpos(strlwr(%assetItem.AssetName), strlwr(%assetItem.imageSuffixType), 0);
%suffixPos = strpos(strlwr(%assetItem.AssetName), strlwr(%assetItem.ImageType), 0);
%noSuffixName = getSubStr(%assetItem.AssetName, 0, %suffixPos);
}
@ -280,7 +280,7 @@ function parseImageSuffixes(%assetItem)
%suffixToken = getToken(getAssetImportConfigValue("Images/DiffuseTypeSuffixes", ""), ",;", %sfx);
if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName))
{
%assetItem.imageSuffixType = %suffixToken;
%assetItem.ImageType = %suffixToken;
return "diffuse";
}
}
@ -292,7 +292,7 @@ function parseImageSuffixes(%assetItem)
%suffixToken = getToken(getAssetImportConfigValue("Images/NormalTypeSuffixes", ""), ",;", %sfx);
if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName))
{
%assetItem.imageSuffixType = %suffixToken;
%assetItem.ImageType = %suffixToken;
return "normal";
}
}
@ -304,7 +304,7 @@ function parseImageSuffixes(%assetItem)
%suffixToken = getToken(getAssetImportConfigValue("Images/RoughnessTypeSuffixes", ""), ",;", %sfx);
if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName))
{
%assetItem.imageSuffixType = %suffixToken;
%assetItem.ImageType = %suffixToken;
return "roughness";
}
}
@ -316,7 +316,7 @@ function parseImageSuffixes(%assetItem)
%suffixToken = getToken(getAssetImportConfigValue("Images/AOTypeSuffixes", ""), ",;", %sfx);
if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName))
{
%assetItem.imageSuffixType = %suffixToken;
%assetItem.ImageType = %suffixToken;
return "AO";
}
}
@ -328,7 +328,7 @@ function parseImageSuffixes(%assetItem)
%suffixToken = getToken(getAssetImportConfigValue("Images/MetalnessTypeSuffixes", ""), ",;", %sfx);
if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName))
{
%assetItem.imageSuffixType = %suffixToken;
%assetItem.ImageType = %suffixToken;
return "metalness";
}
}
@ -340,7 +340,7 @@ function parseImageSuffixes(%assetItem)
%suffixToken = getToken(getAssetImportConfigValue("Images/CompositeTypeSuffixes", ""), ",;", %sfx);
if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName))
{
%assetItem.imageSuffixType = %suffixToken;
%assetItem.ImageType = %suffixToken;
return "composite";
}
}

View file

@ -555,6 +555,7 @@ function TerrainMaterialDlg::saveDirtyMaterial( %this, %mat )
}
%mat.diffuseMap = %newDiffuse;
%mat.diffuseMapAsset = "";
%mat.normalMap = %newNormal;
%mat.pbrConfigMap = %newPBRConfig;
%mat.detailMap = %newDetail;
@ -575,7 +576,11 @@ function TerrainMaterialDlg::saveDirtyMaterial( %this, %mat )
%fileName = %mat.getFileName();
if( %fileName $= "" )
%fileName = "data/terrains/materials.cs";
{
error("TerrainMaterialDlg::saveDirtyMaterial() - terrain material doesn't have a fileName set to save to.");
return;
//%fileName = "data/terrains/materials.cs";
}
ETerrainMaterialPersistMan.setDirty( %mat, %fileName );
}