mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-11 06:34:36 +00:00
various fixes around preview assets and imageassets text field
Imageasset text field now displays correctly in inspector previews now use assets again assetBrowser hides previewCache folder
This commit is contained in:
parent
dfbfe094bb
commit
50f74368b3
6 changed files with 121 additions and 35 deletions
|
|
@ -233,10 +233,10 @@ DefineEnumType(ImageAssetType);
|
|||
|
||||
#pragma region Refactor Asset Macros
|
||||
|
||||
#define DECLARE_IMAGEASSET(className, name, profile) \
|
||||
#define DECLARE_IMAGEASSET(className, name, profile) \
|
||||
private: \
|
||||
AssetPtr<ImageAsset> m##name##Asset;\
|
||||
String m##name##File;\
|
||||
AssetPtr<ImageAsset> m##name##Asset; \
|
||||
StringTableEntry m##name##File = StringTable->EmptyString(); \
|
||||
public: \
|
||||
void _set##name(StringTableEntry _in){ \
|
||||
if(m##name##Asset.getAssetId() == _in) \
|
||||
|
|
@ -244,6 +244,7 @@ public:
|
|||
if(_in == NULL || _in == StringTable->EmptyString()) \
|
||||
{ \
|
||||
m##name##Asset = NULL; \
|
||||
m##name##File = ""; \
|
||||
return; \
|
||||
} \
|
||||
if(!AssetDatabase.isDeclaredAsset(_in)) \
|
||||
|
|
@ -271,10 +272,12 @@ public:
|
|||
imageAssetId = ImageAsset::smNoImageAssetFallback; \
|
||||
} \
|
||||
m##name##Asset = imageAssetId; \
|
||||
m##name##File = _in; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
m##name##Asset = _in; \
|
||||
m##name##File = get##name##File(); \
|
||||
} \
|
||||
}; \
|
||||
\
|
||||
|
|
@ -285,10 +288,10 @@ public:
|
|||
StringTableEntry get##name##File(){ return m##name##Asset.notNull() ? m##name##Asset->getImageFile() : ""; }
|
||||
|
||||
|
||||
#define DECLARE_IMAGEASSET_NET(className, name, profile, mask) \
|
||||
#define DECLARE_IMAGEASSET_NET(className, name, profile, mask) \
|
||||
private: \
|
||||
AssetPtr<ImageAsset> m##name##Asset; \
|
||||
String m##name##File;\
|
||||
StringTableEntry m##name##File = StringTable->EmptyString(); \
|
||||
public: \
|
||||
void _set##name(StringTableEntry _in){ \
|
||||
if(m##name##Asset.getAssetId() == _in) \
|
||||
|
|
@ -296,6 +299,7 @@ public:
|
|||
if(_in == NULL || _in == StringTable->EmptyString()) \
|
||||
{ \
|
||||
m##name##Asset = NULL; \
|
||||
m##name##File = ""; \
|
||||
setMaskBits(mask); \
|
||||
return; \
|
||||
} \
|
||||
|
|
@ -324,10 +328,12 @@ public:
|
|||
imageAssetId = ImageAsset::smNoImageAssetFallback; \
|
||||
} \
|
||||
m##name##Asset = imageAssetId; \
|
||||
m##name##File = _in; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
m##name##Asset = _in; \
|
||||
m##name##File = get##name##File(); \
|
||||
} \
|
||||
setMaskBits(mask); \
|
||||
}; \
|
||||
|
|
@ -339,15 +345,15 @@ public:
|
|||
StringTableEntry get##name##File(){ return m##name##Asset.notNull() ? m##name##Asset->getImageFile() : ""; }
|
||||
|
||||
|
||||
#define INITPERSISTFIELD_IMAGEASSET(name, consoleClass, docs) \
|
||||
#define INITPERSISTFIELD_IMAGEASSET(name, consoleClass, docs) \
|
||||
addProtectedField(assetText(name, Asset), TypeImageAssetPtr, Offset(m##name##Asset, consoleClass), _set##name##Data, &defaultProtectedGetFn, assetDoc(name, asset docs.)); \
|
||||
addProtectedField(assetText(name, File), TypeFilename, Offset(m##name##File, consoleClass), _set##name##Data, &defaultProtectedGetFn, assetDoc(name, file docs.));
|
||||
|
||||
|
||||
#define DECLARE_IMAGEASSET_ARRAY(className, name, profile, max) \
|
||||
#define DECLARE_IMAGEASSET_ARRAY(className, name, profile, max) \
|
||||
private: \
|
||||
AssetPtr<ImageAsset> m##name##Asset[max]; \
|
||||
String m##name##File[max];\
|
||||
StringTableEntry m##name##File[max] = {StringTable->EmptyString() }; \
|
||||
public: \
|
||||
void _set##name(StringTableEntry _in, const U32& index){ \
|
||||
if(m##name##Asset[index].getAssetId() == _in) \
|
||||
|
|
@ -355,6 +361,7 @@ public:
|
|||
if(_in == NULL || _in == StringTable->EmptyString()) \
|
||||
{ \
|
||||
m##name##Asset[index] = NULL; \
|
||||
m##name##File[index] = ""; \
|
||||
return; \
|
||||
} \
|
||||
if(!AssetDatabase.isDeclaredAsset(_in)) \
|
||||
|
|
@ -382,10 +389,12 @@ public:
|
|||
imageAssetId = ImageAsset::smNoImageAssetFallback; \
|
||||
} \
|
||||
m##name##Asset[index] = imageAssetId; \
|
||||
m##name##File[index] = _in; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
m##name##Asset[index] = _in; \
|
||||
m##name##File[index] = get##name##File(index); \
|
||||
} \
|
||||
}; \
|
||||
\
|
||||
|
|
@ -397,10 +406,10 @@ public:
|
|||
StringTableEntry get##name##File(const U32& idx){ return m##name##Asset[idx].notNull() ? m##name##Asset[idx]->getImageFile() : ""; }
|
||||
|
||||
|
||||
#define DECLARE_IMAGEASSET_ARRAY_NET(className, name, profile, max, mask) \
|
||||
#define DECLARE_IMAGEASSET_ARRAY_NET(className, name, profile, max, mask) \
|
||||
private: \
|
||||
AssetPtr<ImageAsset> m##name##Asset[max]; \
|
||||
String m##name##File[max];\
|
||||
StringTableEntry m##name##File[max] = {StringTable->EmptyString() }; \
|
||||
public: \
|
||||
void _set##name(StringTableEntry _in, const U32& index){ \
|
||||
if(m##name##Asset[index].getAssetId() == _in) \
|
||||
|
|
@ -408,6 +417,7 @@ public:
|
|||
if(_in == NULL || _in == StringTable->EmptyString()) \
|
||||
{ \
|
||||
m##name##Asset[index] = NULL; \
|
||||
m##name##File[index] = ""; \
|
||||
setMaskBits(mask); \
|
||||
return; \
|
||||
} \
|
||||
|
|
@ -436,10 +446,12 @@ public:
|
|||
imageAssetId = ImageAsset::smNoImageAssetFallback; \
|
||||
} \
|
||||
m##name##Asset[index] = imageAssetId; \
|
||||
m##name##File[index] = _in; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
m##name##Asset[index] = _in; \
|
||||
m##name##File[index] = get##name##File(index); \
|
||||
} \
|
||||
setMaskBits(mask); \
|
||||
}; \
|
||||
|
|
|
|||
|
|
@ -2226,6 +2226,23 @@ bool stripRepeatSlashes(char* pDstPath, const char* pSrcPath, S32 dstSize)
|
|||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
DefineEngineFunction(expandPath, const char*, (const char* path),, "(string path) - Expands an expando or relative path into a full path.")
|
||||
{
|
||||
char* ret = Con::getReturnBuffer(1024);
|
||||
Con::expandPath(ret, 1024, path);
|
||||
return ret;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
DefineEngineFunction(collapsePath, const char*, (const char* path), , "(string path) - Collapses a path into either an expando path or a relative path.")
|
||||
{
|
||||
char* ret = Con::getReturnBuffer(1024);
|
||||
Con::collapsePath(ret, 1024, path);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
DefineEngineFunction( log, void, ( const char* message ),,
|
||||
"@brief Logs a message to the console.\n\n"
|
||||
"@param message The message text.\n"
|
||||
|
|
|
|||
|
|
@ -258,7 +258,7 @@ function AssetBrowser::initialize(%this)
|
|||
|
||||
if(!isObject(%this.dirHandler))
|
||||
{
|
||||
%this.dirHandler = makedirectoryHandler(%this-->filterTree, "cache,shaderCache", "");
|
||||
%this.dirHandler = makedirectoryHandler(%this-->filterTree, "cache,shaderCache,previewCache", "");
|
||||
%this.dirHandler.currentAddress = "data/";
|
||||
}
|
||||
|
||||
|
|
@ -1613,7 +1613,7 @@ function AssetBrowser::doRebuildAssetArray(%this)
|
|||
else
|
||||
{
|
||||
//got it.
|
||||
if(%folderName $= "shaderCache" || %folderName $= "cache" || %folderName $= ".git")
|
||||
if(%folderName $= "shaderCache" || %folderName $= "cache" || %folderName $= ".git" || %folderName $= "previewCache")
|
||||
continue;
|
||||
|
||||
if(!%this.coreModulesFilter && %folderName $= "core" && %breadcrumbPath $= "")
|
||||
|
|
|
|||
|
|
@ -42,29 +42,53 @@ function ImageAsset::generatePreviewImage(%this, %previewButton, %forceRegenerat
|
|||
if(%forceRegenerate $= "")
|
||||
%forceRegenerate = false;
|
||||
|
||||
%previewPath = "tools/resources/previewCache/" @ %previewButton.moduleName @ "/";
|
||||
%previewPath = "tools/resources/previewCache/" @ %previewButton.moduleName @ "/";
|
||||
|
||||
if(!IsDirectory(%previewPath))
|
||||
{
|
||||
$CurrentAssetBrowser.dirHandler.createFolder(%previewPath);
|
||||
}
|
||||
|
||||
%previewFilePath = %previewPath @ %this.assetName @ ".png";
|
||||
%previewFilePath = %previewPath @ %this.assetName @ "_Preview.png";
|
||||
|
||||
if(!isFile(%previewFilePath) || (compareFileTimes(%this.getImagePath(), %previewFilePath) == 1))
|
||||
{
|
||||
%generatePreview = true;
|
||||
}
|
||||
|
||||
%previewAssetName = "ToolsModule:" @ %this.assetName @ "_Preview";
|
||||
|
||||
if(%generatePreview || %forceRegenerate)
|
||||
{
|
||||
%success = saveScaledImage(%this.getImagePath(), %previewFilePath, EditorSettings.value("Assets/Browser/PreviewImageSize"));
|
||||
|
||||
if(%success)
|
||||
%previewButton.setBitmap(%previewFilePath);
|
||||
|
||||
{
|
||||
|
||||
if(!AssetDatabase.isDeclaredAsset(%previewAssetName))
|
||||
{
|
||||
%preview_Asset = new ImageAsset()
|
||||
{
|
||||
assetName = %this.assetName @ "_Preview";
|
||||
versionId = 1;
|
||||
imageFile = makeFullPath(%previewFilePath);
|
||||
};
|
||||
|
||||
TamlWrite(%preview_Asset, expandPath("^ToolsModule/resources/previewCache/" @ %previewButton.moduleName @ "/" @ %preview_Asset.AssetName @ ".asset.taml"));
|
||||
%toolsModuleDef = ModuleDatabase.findModule("ToolsModule",1);
|
||||
AssetDatabase.addDeclaredAsset(%toolsModuleDef, expandPath("^ToolsModule/resources/previewCache/" @ %previewButton.moduleName @ "/" @ %preview_Asset.AssetName @ ".asset.taml"));
|
||||
}
|
||||
|
||||
%previewButton.bitmapAsset = %previewAssetName;
|
||||
}
|
||||
|
||||
return %success;
|
||||
}
|
||||
else
|
||||
{
|
||||
%previewButton.bitmapAsset = %previewAssetName;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -101,8 +101,7 @@ function MaterialAsset::generatePreviewImage(%this, %previewButton, %forceRegene
|
|||
if(%forceRegenerate $= "")
|
||||
%forceRegenerate = false;
|
||||
|
||||
%module = $CurrentAssetBrowser.dirHandler.getModuleFromAddress(makeRelativePath(filePath(AssetDatabase.getAssetFilePath(%this.getAssetId()))));
|
||||
%previewPath = "tools/resources/previewCache/" @ %module.moduleId @ "/";
|
||||
%previewPath = "tools/resources/previewCache/" @ %previewButton.moduleName @ "/";
|
||||
|
||||
if(!IsDirectory(%previewPath))
|
||||
{
|
||||
|
|
@ -111,7 +110,8 @@ function MaterialAsset::generatePreviewImage(%this, %previewButton, %forceRegene
|
|||
|
||||
%generatePreview = false;
|
||||
|
||||
%previewFilePath = %previewPath @ %this.assetName @ ".png";
|
||||
%previewFilePath = %previewPath @ %this.assetName @ "_Preview.png";
|
||||
|
||||
if(!isFile(%previewFilePath))
|
||||
{
|
||||
%generatePreview = true;
|
||||
|
|
@ -126,6 +126,8 @@ function MaterialAsset::generatePreviewImage(%this, %previewButton, %forceRegene
|
|||
}
|
||||
}
|
||||
|
||||
%previewAssetName = "ToolsModule:" @ %this.assetName @ "_Preview";
|
||||
|
||||
if(%generatePreview || %forceRegenerate)
|
||||
{
|
||||
if(isObject(%this.materialDefinitionName))
|
||||
|
|
@ -137,22 +139,41 @@ function MaterialAsset::generatePreviewImage(%this, %previewButton, %forceRegene
|
|||
%diffuseMapAsset = AssetDatabase.acquireAsset(%diffuseMapAssetId);
|
||||
AssetDatabase.releaseAsset(%diffuseMapAssetId);
|
||||
}
|
||||
|
||||
%previewShapeDef = AssetDatabase.acquireAsset("ToolsModule:previewSphereShape");
|
||||
%generatedFilePath = %previewShapeDef.generateCachedPreviewImage(256, %this.materialDefinitionName);
|
||||
|
||||
pathCopy(%generatedFilePath, %previewFilePath, false);
|
||||
fileDelete(%generatedFilePath);
|
||||
|
||||
if(isFile(%previewFilePath))
|
||||
if(!AssetDatabase.isDeclaredAsset(%previewAssetName))
|
||||
{
|
||||
%previewButton.setBitmap(%previewFilePath);
|
||||
return true;
|
||||
%preview_Asset = new ImageAsset()
|
||||
{
|
||||
assetName = %this.assetName @ "_Preview";
|
||||
versionId = 1;
|
||||
imageFile = makeFullPath(%previewFilePath);
|
||||
};
|
||||
|
||||
TamlWrite(%preview_Asset, expandPath("^ToolsModule/resources/previewCache/" @ %previewButton.moduleName @ "/" @ %preview_Asset.AssetName @ ".asset.taml"));
|
||||
%toolsModuleDef = ModuleDatabase.findModule("ToolsModule",1);
|
||||
AssetDatabase.addDeclaredAsset(%toolsModuleDef, expandPath("^ToolsModule/resources/previewCache/" @ %previewButton.moduleName @ "/" @ %preview_Asset.AssetName @ ".asset.taml"));
|
||||
}
|
||||
|
||||
%previewButton.bitmapAsset = %previewAssetName;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
%previewButton.bitmapAsset = %previewAssetName;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -111,23 +111,21 @@ function ShapeAsset::generatePreviewImage(%this, %previewButton, %forceRegenerat
|
|||
if(%forceRegenerate $= "")
|
||||
%forceRegenerate = false;
|
||||
|
||||
%assetId = %this.getAssetId();
|
||||
|
||||
%module = %previewButton.assetBrowser.dirHandler.getModuleFromAddress(makeRelativePath(filePath(%this.getShapePath())));
|
||||
%previewPath = "tools/resources/previewCache/" @ %module.moduleId @ "/";
|
||||
%previewPath = "tools/resources/previewCache/" @ %previewButton.moduleName @ "/";
|
||||
|
||||
if(!IsDirectory(%previewPath))
|
||||
{
|
||||
%previewButton.assetBrowser.dirHandler.createFolder(%previewPath);
|
||||
$CurrentAssetBrowser.dirHandler.createFolder(%previewPath);
|
||||
}
|
||||
|
||||
%generatePreview = false;
|
||||
%previewFilePath = %previewPath @ %this.assetName @ "_Preview.png";
|
||||
|
||||
%previewFilePath = %previewPath @ %this.assetName @ ".png";
|
||||
if(!isFile(%previewFilePath) || (compareFileTimes(%this.getShapePath(), %previewFilePath) == 1))
|
||||
{
|
||||
%generatePreview = true;
|
||||
}
|
||||
|
||||
%previewAssetName = "ToolsModule:" @ %this.assetName @ "_Preview";
|
||||
|
||||
if(%generatePreview || %forceRegenerate)
|
||||
{
|
||||
|
|
@ -146,14 +144,28 @@ function ShapeAsset::generatePreviewImage(%this, %previewButton, %forceRegenerat
|
|||
|
||||
pathCopy(%filePath, %previewFilePath, false);
|
||||
fileDelete(%filePath); //cleanup
|
||||
|
||||
if(isFile(%previewFilePath))
|
||||
|
||||
if(!AssetDatabase.isDeclaredAsset(%previewAssetName))
|
||||
{
|
||||
%previewButton.setBitmap(%previewFilePath);
|
||||
return true;
|
||||
%preview_Asset = new ImageAsset()
|
||||
{
|
||||
assetName = %this.assetName @ "_Preview";
|
||||
versionId = 1;
|
||||
imageFile = makeFullPath(%previewFilePath);
|
||||
};
|
||||
|
||||
TamlWrite(%preview_Asset, expandPath("^ToolsModule/resources/previewCache/" @ %previewButton.moduleName @ "/" @ %preview_Asset.AssetName @ ".asset.taml"));
|
||||
%toolsModuleDef = ModuleDatabase.findModule("ToolsModule",1);
|
||||
AssetDatabase.addDeclaredAsset(%toolsModuleDef, expandPath("^ToolsModule/resources/previewCache/" @ %previewButton.moduleName @ "/" @ %preview_Asset.AssetName @ ".asset.taml"));
|
||||
}
|
||||
|
||||
return false;
|
||||
%previewButton.bitmapAsset = %previewAssetName;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
%previewButton.bitmapAsset = %previewAssetName;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue