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(); mCodeFile = StringTable->EmptyString();
mHeaderFile = StringTable->EmptyString(); mHeaderFile = StringTable->EmptyString();
mCodePath = StringTable->EmptyString();
mHeaderPath = StringTable->EmptyString();
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@ -164,7 +166,14 @@ void CppAsset::setHeaderFile(const char* pHeaderFile)
void CppAsset::initializeAsset() 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; typedef AssetBase Parent;
StringTableEntry mCodeFile; StringTableEntry mCodeFile;
StringTableEntry mCodePath;
StringTableEntry mHeaderFile; StringTableEntry mHeaderFile;
StringTableEntry mHeaderPath;
public: public:
CppAsset(); CppAsset();
@ -66,11 +68,14 @@ public:
protected: protected:
virtual void initializeAsset(void); 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 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(); } 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 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(); } 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(); mScriptFile = StringTable->EmptyString();
mGUIFile = StringTable->EmptyString(); mGUIFile = StringTable->EmptyString();
mScriptPath = StringTable->EmptyString();
mGUIPath = StringTable->EmptyString();
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@ -118,28 +121,28 @@ void GUIAsset::copyTo(SimObject* object)
void GUIAsset::initializeAsset() void GUIAsset::initializeAsset()
{ {
mGUIFile = expandAssetFilePath(mGUIFile); mGUIPath = expandAssetFilePath(mGUIFile);
if (Platform::isFile(mGUIFile)) if (Platform::isFile(mGUIPath))
Con::executeFile(mGUIFile, false, false); Con::executeFile(mGUIPath, false, false);
mScriptFile = expandAssetFilePath(mScriptFile); mScriptPath = expandAssetFilePath(mScriptFile);
if (Platform::isFile(mScriptFile)) if (Platform::isFile(mScriptPath))
Con::executeFile(mScriptFile, false, false); Con::executeFile(mScriptPath, false, false);
} }
void GUIAsset::onAssetRefresh() void GUIAsset::onAssetRefresh()
{ {
mGUIFile = expandAssetFilePath(mGUIFile); mGUIPath = expandAssetFilePath(mGUIFile);
if (Platform::isFile(mGUIFile)) if (Platform::isFile(mGUIPath))
Con::executeFile(mGUIFile, false, false); Con::executeFile(mGUIPath, false, false);
mScriptFile = expandAssetFilePath(mScriptFile); mScriptPath = expandAssetFilePath(mScriptFile);
if (Platform::isFile(mScriptFile)) if (Platform::isFile(mScriptPath))
Con::executeFile(mScriptFile, false, false); Con::executeFile(mScriptPath, false, false);
} }
void GUIAsset::setGUIFile(const char* pScriptFile) void GUIAsset::setGUIFile(const char* pScriptFile)
@ -155,7 +158,7 @@ void GUIAsset::setGUIFile(const char* pScriptFile)
return; return;
// Update. // Update.
mGUIFile = getOwned() ? expandAssetFilePath(pScriptFile) : StringTable->insert(pScriptFile); mGUIFile = StringTable->insert(pScriptFile);
// Refresh the asset. // Refresh the asset.
refreshAsset(); refreshAsset();
@ -174,7 +177,7 @@ void GUIAsset::setScriptFile(const char* pScriptFile)
return; return;
// Update. // Update.
mScriptFile = getOwned() ? expandAssetFilePath(pScriptFile) : StringTable->insert(pScriptFile); mScriptFile = StringTable->insert(pScriptFile);
// Refresh the asset. // Refresh the asset.
refreshAsset(); refreshAsset();

View file

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

View file

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

View file

@ -50,6 +50,8 @@ class GameObjectAsset : public AssetBase
StringTableEntry mGameObjectName; StringTableEntry mGameObjectName;
StringTableEntry mScriptFile; StringTableEntry mScriptFile;
StringTableEntry mTAMLFile; StringTableEntry mTAMLFile;
StringTableEntry mScriptPath;
StringTableEntry mTAMLPath;
public: public:
GameObjectAsset(); GameObjectAsset();
@ -77,6 +79,9 @@ protected:
static const char* getScriptFile(void* obj, const char* data) { return static_cast<GameObjectAsset*>(obj)->getScriptFile(); } 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 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(); } 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) DefineConsoleType(TypeGameObjectAssetPtr, GameObjectAsset)

View file

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

View file

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

View file

@ -92,6 +92,13 @@ LevelAsset::LevelAsset() : AssetBase(), mIsSubLevel(false)
mForestFile = StringTable->EmptyString(); mForestFile = StringTable->EmptyString();
mNavmeshFile = 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(); mGamemodeName = StringTable->EmptyString();
mMainLevelAsset = StringTable->EmptyString(); mMainLevelAsset = StringTable->EmptyString();
@ -151,12 +158,23 @@ void LevelAsset::initializeAsset()
Parent::initializeAsset(); Parent::initializeAsset();
// Ensure the image-file is expanded. // Ensure the image-file is expanded.
mPreviewImage = expandAssetFilePath(mPreviewImage); mPreviewImagePath = expandAssetFilePath(mPreviewImage);
mLevelFile = expandAssetFilePath(mLevelFile); mLevelPath = expandAssetFilePath(mLevelFile);
mPostFXPresetFile = expandAssetFilePath(mPostFXPresetFile); mPostFXPresetPath = expandAssetFilePath(mPostFXPresetFile);
mDecalsFile = expandAssetFilePath(mDecalsFile); mDecalsPath = expandAssetFilePath(mDecalsFile);
mForestFile = expandAssetFilePath(mForestFile); mForestPath = expandAssetFilePath(mForestFile);
mNavmeshFile = expandAssetFilePath(mNavmeshFile); 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 mNavmeshFile;
StringTableEntry mPreviewImage; StringTableEntry mPreviewImage;
StringTableEntry mLevelPath;
StringTableEntry mPostFXPresetPath;
StringTableEntry mDecalsPath;
StringTableEntry mForestPath;
StringTableEntry mNavmeshPath;
StringTableEntry mPreviewImagePath;
StringTableEntry mEditorFile; StringTableEntry mEditorFile;
StringTableEntry mBakedSceneFile; StringTableEntry mBakedSceneFile;
@ -84,6 +91,13 @@ public:
void setImageFile(const char* pImageFile); void setImageFile(const char* pImageFile);
inline StringTableEntry getImageFile(void) const { return mPreviewImage; }; 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); void setEditorFile(const char* pEditorFile);
inline StringTableEntry getEditorFile(void) const { return mEditorFile; }; inline StringTableEntry getEditorFile(void) const { return mEditorFile; };
void setBakedSceneFile(const char* pBakedSceneFile); void setBakedSceneFile(const char* pBakedSceneFile);
@ -114,7 +128,7 @@ protected:
virtual void initializeAsset(void); virtual void initializeAsset(void);
virtual void onAssetRefresh(void) {} virtual void onAssetRefresh(void);
}; };
DefineConsoleType(TypeLevelAssetPtr, LevelAsset) DefineConsoleType(TypeLevelAssetPtr, LevelAsset)

View file

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

View file

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

View file

@ -95,6 +95,10 @@ PostEffectAsset::PostEffectAsset()
mScriptFile = StringTable->EmptyString(); mScriptFile = StringTable->EmptyString();
mHLSLShaderFile = StringTable->EmptyString(); mHLSLShaderFile = StringTable->EmptyString();
mGLSLShaderFile = 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() void PostEffectAsset::initializeAsset()
{ {
mScriptFile = expandAssetFilePath(mScriptFile); mScriptPath = expandAssetFilePath(mScriptFile);
mHLSLShaderFile = expandAssetFilePath(mHLSLShaderFile); mHLSLShaderPath = expandAssetFilePath(mHLSLShaderFile);
mGLSLShaderFile = expandAssetFilePath(mGLSLShaderFile); mGLSLShaderPath = expandAssetFilePath(mGLSLShaderFile);
if (Platform::isFile(mScriptFile)) if (Platform::isFile(mScriptPath))
Con::executeFile(mScriptFile, false, false); Con::executeFile(mScriptPath, false, false);
} }
void PostEffectAsset::onAssetRefresh() void PostEffectAsset::onAssetRefresh()
{ {
mScriptFile = expandAssetFilePath(mScriptFile); mScriptPath = expandAssetFilePath(mScriptFile);
mHLSLShaderFile = expandAssetFilePath(mHLSLShaderFile); mHLSLShaderPath = expandAssetFilePath(mHLSLShaderFile);
mGLSLShaderFile = expandAssetFilePath(mGLSLShaderFile); mGLSLShaderPath = expandAssetFilePath(mGLSLShaderFile);
if (Platform::isFile(mScriptFile)) if (Platform::isFile(mScriptPath))
Con::executeFile(mScriptFile, false, false); Con::executeFile(mScriptPath, false, false);
} }
void PostEffectAsset::setScriptFile(const char* pScriptFile) void PostEffectAsset::setScriptFile(const char* pScriptFile)

View file

@ -49,6 +49,10 @@ class PostEffectAsset : public AssetBase
StringTableEntry mScriptFile; StringTableEntry mScriptFile;
StringTableEntry mHLSLShaderFile; StringTableEntry mHLSLShaderFile;
StringTableEntry mGLSLShaderFile; StringTableEntry mGLSLShaderFile;
StringTableEntry mScriptPath;
StringTableEntry mHLSLShaderPath;
StringTableEntry mGLSLShaderPath;
public: public:
PostEffectAsset(); PostEffectAsset();
@ -66,6 +70,10 @@ public:
void setGLSLShaderFile(const char* pShaderFile); void setGLSLShaderFile(const char* pShaderFile);
inline StringTableEntry getGLSLShaderFile(void) const { return mGLSLShaderFile; }; 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 Console Object.
DECLARE_CONOBJECT(PostEffectAsset); DECLARE_CONOBJECT(PostEffectAsset);

View file

@ -92,6 +92,7 @@ ConsoleSetType(TypeScriptAssetPtr)
ScriptAsset::ScriptAsset() : AssetBase(), mIsServerSide(true) ScriptAsset::ScriptAsset() : AssetBase(), mIsServerSide(true)
{ {
mScriptFile = StringTable->EmptyString(); mScriptFile = StringTable->EmptyString();
mScriptPath = StringTable->EmptyString();
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@ -121,9 +122,9 @@ void ScriptAsset::copyTo(SimObject* object)
void ScriptAsset::initializeAsset() 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 //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); 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() void ScriptAsset::onAssetRefresh()
{ {
mScriptFile = expandAssetFilePath(mScriptFile); mScriptPath = expandAssetFilePath(mScriptFile);
if (Platform::isFile(mScriptFile)) if (Platform::isFile(mScriptPath))
{ {
//Refresh any dependencies we may have //Refresh any dependencies we may have
for (U32 i = 0; i < mScriptAssets.size(); i++) for (U32 i = 0; i < mScriptAssets.size(); i++)
@ -159,7 +160,7 @@ void ScriptAsset::onAssetRefresh()
mScriptAssets[i]->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; return;
// Update. // Update.
mScriptFile = getOwned() ? expandAssetFilePath(pScriptFile) : StringTable->insert(pScriptFile); mScriptFile = StringTable->insert(pScriptFile);
// Refresh the asset. // Refresh the asset.
refreshAsset(); refreshAsset();
@ -191,9 +192,9 @@ bool ScriptAsset::execScript()
return false; return false;
if (Platform::isFile(mScriptFile)) if (Platform::isFile(mScriptPath))
{ {
return Con::executeFile(mScriptFile, false, false); return Con::executeFile(mScriptPath, false, false);
} }
else else
{ {

View file

@ -49,6 +49,7 @@ class ScriptAsset : public AssetBase
typedef AssetBase Parent; typedef AssetBase Parent;
StringTableEntry mScriptFile; StringTableEntry mScriptFile;
StringTableEntry mScriptPath;
bool mIsServerSide; bool mIsServerSide;
Vector<AssetPtr<ScriptAsset>> mScriptAssets; Vector<AssetPtr<ScriptAsset>> mScriptAssets;
@ -67,6 +68,8 @@ public:
void setScriptFile(const char* pScriptFile); void setScriptFile(const char* pScriptFile);
inline StringTableEntry getScriptFile(void) const { return mScriptFile; }; inline StringTableEntry getScriptFile(void) const { return mScriptFile; };
inline StringTableEntry getScriptPath(void) const { return mScriptPath; };
bool execScript(); bool execScript();
protected: 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) mIsEmbedded(false), mIsCyclical(true), mIsBlend(false), mBlendFrame(0), mStartFrame(0), mEndFrame(-1), mPadRotation(true), mPadTransforms(false)
{ {
mFileName = StringTable->EmptyString(); mFileName = StringTable->EmptyString();
mFilePath = StringTable->EmptyString();
mAnimationName = StringTable->EmptyString(); mAnimationName = StringTable->EmptyString();
mBlendAnimAssetName = StringTable->EmptyString(); mBlendAnimAssetName = StringTable->EmptyString();
@ -146,11 +147,9 @@ void ShapeAnimationAsset::initializeAsset(void)
if (!mIsEmbedded) if (!mIsEmbedded)
{ {
//If we're not embedded, we need to load in our initial shape and do some prepwork //If we're not embedded, we need to load in our initial shape and do some prepwork
mFilePath = expandAssetFilePath(mFileName);
char filenameBuf[1024]; mSourceShape = ResourceManager::get().load(mFilePath);
Con::expandScriptFilename(filenameBuf, sizeof(filenameBuf), mFileName);
mSourceShape = ResourceManager::get().load(filenameBuf);
if (!mSourceShape->addSequence("ambient", "", mAnimationName, mStartFrame, mEndFrame, mPadRotation, mPadTransforms)) if (!mSourceShape->addSequence("ambient", "", mAnimationName, mStartFrame, mEndFrame, mPadRotation, mPadTransforms))
{ {
@ -185,7 +184,7 @@ void ShapeAnimationAsset::setAnimationFile(const char* pAnimationFile)
return; return;
// Update. // Update.
mFileName = getOwned() ? expandAssetFilePath(pAnimationFile) : StringTable->insert(pAnimationFile); mFileName = StringTable->insert(pAnimationFile);
// Refresh the asset. // Refresh the asset.
refreshAsset(); refreshAsset();

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -55,6 +55,7 @@ class TerrainMaterialAsset : public AssetBase
typedef AssetBase Parent; typedef AssetBase Parent;
StringTableEntry mScriptFile; StringTableEntry mScriptFile;
StringTableEntry mScriptPath;
StringTableEntry mMatDefinitionName; StringTableEntry mMatDefinitionName;
public: public:
@ -72,6 +73,8 @@ public:
void setScriptFile(const char* pScriptFile); void setScriptFile(const char* pScriptFile);
inline StringTableEntry getScriptFile(void) const { return mScriptFile; }; inline StringTableEntry getScriptFile(void) const { return mScriptFile; };
inline StringTableEntry getScriptPath(void) const { return mScriptPath; };
/// Declare Console Object. /// Declare Console Object.
DECLARE_CONOBJECT(TerrainMaterialAsset); 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("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"); 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); resetAssetValidationStatus(assetItem);
importIssues = false; importIssues = false;
} }
else if (activeImportConfig.DuplicatAutoResolution == String("UseExisting"))
{
}
} }
else if (assetItem->statusType == String("MissingFile")) else if (assetItem->statusType == String("MissingFile"))
{ {

View file

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

View file

@ -47,6 +47,7 @@ class StateMachineAsset : public AssetBase
typedef AssetBase Parent; typedef AssetBase Parent;
StringTableEntry mStateMachineFile; StringTableEntry mStateMachineFile;
StringTableEntry mStateMachinePath;
public: public:
StateMachineAsset(); StateMachineAsset();
@ -62,9 +63,11 @@ public:
void setStateMachineFile(const char* pStateMachineFile); void setStateMachineFile(const char* pStateMachineFile);
inline StringTableEntry getStateMachineFile(void) const { return mStateMachineFile; }; inline StringTableEntry getStateMachineFile(void) const { return mStateMachineFile; };
inline StringTableEntry getStateMachinePath(void) const { return mStateMachinePath; };
protected: protected:
virtual void initializeAsset(void); 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 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(); } 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-->previewSlider.setValue(EditorSettings.value("Assets/Browser/previewTileSize", "1.0"));
AssetBrowser.toggleAssetTypeFilter(0); AssetBrowser-->filterAssetsButton.setEnabled(true);
} }
function contentTreeTabBook::onTabSelected(%this, %tabText, %tabIndex) function contentTreeTabBook::onTabSelected(%this, %tabText, %tabIndex)
@ -279,7 +279,11 @@ function AssetBrowser::showDialog( %this, %AssetTypeFilter, %selectCallback, %ta
//visibility filter //visibility filter
if(%AssetTypeFilter !$= "") if(%AssetTypeFilter !$= "")
{ {
AssetBrowser.toggleAssetTypeFilter(0); AssetBrowser-->filterAssetsButton.setEnabled(false);
}
else
{
AssetBrowser-->filterAssetsButton.setEnabled(true);
} }
if(%selectCallback $= "") if(%selectCallback $= "")
@ -503,7 +507,7 @@ function AssetBrowser::buildAssetPreview( %this, %asset, %moduleName )
//%previewButton-->AssetPreviewButton.internalName = %this.previewData.assetName@"Border"; //%previewButton-->AssetPreviewButton.internalName = %this.previewData.assetName@"Border";
//%previewButton-->Button.extent = %previewSize.x + %previewBounds SPC %previewSize.y + 24; //%previewButton-->Button.extent = %previewSize.x + %previewBounds SPC %previewSize.y + 24;
%previewButton.tooltip = %this.previewData.tooltip; %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.altCommand = %doubleClickCommand;
//%previewButton-->AssetPreviewButton.icon = %this.previewData.previewImage; //%previewButton-->AssetPreviewButton.icon = %this.previewData.previewImage;
@ -1463,11 +1467,24 @@ function AssetBrowser::doRebuildAssetArray(%this)
} }
else else
{ {
//got it. if(AssetBrowser.assetTypeFilter !$= "")
%assetArray.add( %moduleName, %assetId ); {
if(AssetBrowser.assetTypeFilter $= %assetType)
if(%assetType !$= "Folder") {
%finalAssetCount++; %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 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); %noSuffixName = getSubStr(%assetItem.AssetName, 0, %suffixPos);
} }
@ -280,7 +280,7 @@ function parseImageSuffixes(%assetItem)
%suffixToken = getToken(getAssetImportConfigValue("Images/DiffuseTypeSuffixes", ""), ",;", %sfx); %suffixToken = getToken(getAssetImportConfigValue("Images/DiffuseTypeSuffixes", ""), ",;", %sfx);
if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName)) if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName))
{ {
%assetItem.imageSuffixType = %suffixToken; %assetItem.ImageType = %suffixToken;
return "diffuse"; return "diffuse";
} }
} }
@ -292,7 +292,7 @@ function parseImageSuffixes(%assetItem)
%suffixToken = getToken(getAssetImportConfigValue("Images/NormalTypeSuffixes", ""), ",;", %sfx); %suffixToken = getToken(getAssetImportConfigValue("Images/NormalTypeSuffixes", ""), ",;", %sfx);
if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName)) if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName))
{ {
%assetItem.imageSuffixType = %suffixToken; %assetItem.ImageType = %suffixToken;
return "normal"; return "normal";
} }
} }
@ -304,7 +304,7 @@ function parseImageSuffixes(%assetItem)
%suffixToken = getToken(getAssetImportConfigValue("Images/RoughnessTypeSuffixes", ""), ",;", %sfx); %suffixToken = getToken(getAssetImportConfigValue("Images/RoughnessTypeSuffixes", ""), ",;", %sfx);
if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName)) if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName))
{ {
%assetItem.imageSuffixType = %suffixToken; %assetItem.ImageType = %suffixToken;
return "roughness"; return "roughness";
} }
} }
@ -316,7 +316,7 @@ function parseImageSuffixes(%assetItem)
%suffixToken = getToken(getAssetImportConfigValue("Images/AOTypeSuffixes", ""), ",;", %sfx); %suffixToken = getToken(getAssetImportConfigValue("Images/AOTypeSuffixes", ""), ",;", %sfx);
if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName)) if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName))
{ {
%assetItem.imageSuffixType = %suffixToken; %assetItem.ImageType = %suffixToken;
return "AO"; return "AO";
} }
} }
@ -328,7 +328,7 @@ function parseImageSuffixes(%assetItem)
%suffixToken = getToken(getAssetImportConfigValue("Images/MetalnessTypeSuffixes", ""), ",;", %sfx); %suffixToken = getToken(getAssetImportConfigValue("Images/MetalnessTypeSuffixes", ""), ",;", %sfx);
if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName)) if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName))
{ {
%assetItem.imageSuffixType = %suffixToken; %assetItem.ImageType = %suffixToken;
return "metalness"; return "metalness";
} }
} }
@ -340,7 +340,7 @@ function parseImageSuffixes(%assetItem)
%suffixToken = getToken(getAssetImportConfigValue("Images/CompositeTypeSuffixes", ""), ",;", %sfx); %suffixToken = getToken(getAssetImportConfigValue("Images/CompositeTypeSuffixes", ""), ",;", %sfx);
if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName)) if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName))
{ {
%assetItem.imageSuffixType = %suffixToken; %assetItem.ImageType = %suffixToken;
return "composite"; return "composite";
} }
} }

View file

@ -555,6 +555,7 @@ function TerrainMaterialDlg::saveDirtyMaterial( %this, %mat )
} }
%mat.diffuseMap = %newDiffuse; %mat.diffuseMap = %newDiffuse;
%mat.diffuseMapAsset = "";
%mat.normalMap = %newNormal; %mat.normalMap = %newNormal;
%mat.pbrConfigMap = %newPBRConfig; %mat.pbrConfigMap = %newPBRConfig;
%mat.detailMap = %newDetail; %mat.detailMap = %newDetail;
@ -575,7 +576,11 @@ function TerrainMaterialDlg::saveDirtyMaterial( %this, %mat )
%fileName = %mat.getFileName(); %fileName = %mat.getFileName();
if( %fileName $= "" ) 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 ); ETerrainMaterialPersistMan.setDirty( %mat, %fileName );
} }