mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-14 16:14:38 +00:00
Merge branch 'Preview4_0' of https://github.com/Areloch/Torque3D into alph40_pbrConfig_BREAKINGWip
This commit is contained in:
commit
062e6f3364
95 changed files with 4237 additions and 2024 deletions
|
|
@ -87,6 +87,10 @@ LevelAsset::LevelAsset() : AssetBase(), mIsSubLevel(false)
|
||||||
mLevelName = StringTable->EmptyString();
|
mLevelName = StringTable->EmptyString();
|
||||||
mLevelFile = StringTable->EmptyString();
|
mLevelFile = StringTable->EmptyString();
|
||||||
mPreviewImage = StringTable->EmptyString();
|
mPreviewImage = StringTable->EmptyString();
|
||||||
|
mPostFXPresetFile = StringTable->EmptyString();
|
||||||
|
mDecalsFile = StringTable->EmptyString();
|
||||||
|
mForestFile = StringTable->EmptyString();
|
||||||
|
mNavmeshFile = StringTable->EmptyString();
|
||||||
|
|
||||||
mGamemodeName = StringTable->EmptyString();
|
mGamemodeName = StringTable->EmptyString();
|
||||||
mMainLevelAsset = StringTable->EmptyString();
|
mMainLevelAsset = StringTable->EmptyString();
|
||||||
|
|
@ -115,6 +119,15 @@ void LevelAsset::initPersistFields()
|
||||||
addProtectedField("PreviewImage", TypeAssetLooseFilePath, Offset(mPreviewImage, LevelAsset),
|
addProtectedField("PreviewImage", TypeAssetLooseFilePath, Offset(mPreviewImage, LevelAsset),
|
||||||
&setPreviewImageFile, &getPreviewImageFile, "Path to the image used for selection preview.");
|
&setPreviewImageFile, &getPreviewImageFile, "Path to the image used for selection preview.");
|
||||||
|
|
||||||
|
addProtectedField("PostFXPresetFile", TypeAssetLooseFilePath, Offset(mPostFXPresetFile, LevelAsset),
|
||||||
|
&setLevelFile, &getLevelFile, "Path to the level's postFXPreset.");
|
||||||
|
addProtectedField("DecalsFile", TypeAssetLooseFilePath, Offset(mDecalsFile, LevelAsset),
|
||||||
|
&setLevelFile, &getLevelFile, "Path to the decals cache file.");
|
||||||
|
addProtectedField("ForestFile", TypeAssetLooseFilePath, Offset(mForestFile, LevelAsset),
|
||||||
|
&setLevelFile, &getLevelFile, "Path to the Forest cache file.");
|
||||||
|
addProtectedField("NavmeshFile", TypeAssetLooseFilePath, Offset(mNavmeshFile, LevelAsset),
|
||||||
|
&setLevelFile, &getLevelFile, "Path to the navmesh file.");
|
||||||
|
|
||||||
addField("isSubScene", TypeBool, Offset(mIsSubLevel, LevelAsset), "Is this a sublevel to another Scene");
|
addField("isSubScene", TypeBool, Offset(mIsSubLevel, LevelAsset), "Is this a sublevel to another Scene");
|
||||||
addField("gameModeName", TypeString, Offset(mGamemodeName, LevelAsset), "Name of the Game Mode to be used with this level");
|
addField("gameModeName", TypeString, Offset(mGamemodeName, LevelAsset), "Name of the Game Mode to be used with this level");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,10 @@ class LevelAsset : public AssetBase
|
||||||
|
|
||||||
StringTableEntry mLevelName;
|
StringTableEntry mLevelName;
|
||||||
StringTableEntry mLevelFile;
|
StringTableEntry mLevelFile;
|
||||||
|
StringTableEntry mPostFXPresetFile;
|
||||||
|
StringTableEntry mDecalsFile;
|
||||||
|
StringTableEntry mForestFile;
|
||||||
|
StringTableEntry mNavmeshFile;
|
||||||
StringTableEntry mPreviewImage;
|
StringTableEntry mPreviewImage;
|
||||||
|
|
||||||
bool mIsSubLevel;
|
bool mIsSubLevel;
|
||||||
|
|
@ -66,6 +70,14 @@ public:
|
||||||
|
|
||||||
void setLevelFile(const char* pImageFile);
|
void setLevelFile(const char* pImageFile);
|
||||||
inline StringTableEntry getLevelFile(void) const { return mLevelFile; };
|
inline StringTableEntry getLevelFile(void) const { return mLevelFile; };
|
||||||
|
void setPostFXPresetFile(const char* pPostFXPresetFile);
|
||||||
|
inline StringTableEntry getPostFXPresetFile(void) const { return mPostFXPresetFile; };
|
||||||
|
void setDecalsFile(const char* pDecalsFile);
|
||||||
|
inline StringTableEntry getDecalsFile(void) const { return mDecalsFile; };
|
||||||
|
void setForestFile(const char* pForestFile);
|
||||||
|
inline StringTableEntry getForestFile(void) const { return mForestFile; };
|
||||||
|
void setNavmeshFile(const char* pNavmeshFile);
|
||||||
|
inline StringTableEntry getNavmeshFile(void) const { return mNavmeshFile; };
|
||||||
void setImageFile(const char* pImageFile);
|
void setImageFile(const char* pImageFile);
|
||||||
inline StringTableEntry getImageFile(void) const { return mPreviewImage; };
|
inline StringTableEntry getImageFile(void) const { return mPreviewImage; };
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,8 @@
|
||||||
#include "assets/assetPtr.h"
|
#include "assets/assetPtr.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "T3D/assets/TerrainMaterialAsset.h"
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
IMPLEMENT_CONOBJECT(TerrainAsset);
|
IMPLEMENT_CONOBJECT(TerrainAsset);
|
||||||
|
|
@ -89,7 +91,7 @@ ConsoleSetType(TypeTerrainAssetPtr)
|
||||||
|
|
||||||
TerrainAsset::TerrainAsset()
|
TerrainAsset::TerrainAsset()
|
||||||
{
|
{
|
||||||
mTerrainFile = StringTable->EmptyString();
|
mTerrainFilePath = StringTable->EmptyString();
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
@ -106,8 +108,22 @@ void TerrainAsset::initPersistFields()
|
||||||
Parent::initPersistFields();
|
Parent::initPersistFields();
|
||||||
|
|
||||||
//addField("shaderGraph", TypeRealString, Offset(mShaderGraphFile, TerrainAsset), "");
|
//addField("shaderGraph", TypeRealString, Offset(mShaderGraphFile, TerrainAsset), "");
|
||||||
addProtectedField("terrainFile", TypeAssetLooseFilePath, Offset(mTerrainFile, TerrainAsset),
|
addProtectedField("terrainFile", TypeAssetLooseFilePath, Offset(mTerrainFilePath, TerrainAsset),
|
||||||
&setTerrainFile, &getTerrainFile, "Path to the file containing the terrain data.");
|
&setTerrainFilePath, &getTerrainFilePath, "Path to the file containing the terrain data.");
|
||||||
|
}
|
||||||
|
|
||||||
|
void TerrainAsset::setDataField(StringTableEntry slotName, const char* array, const char* value)
|
||||||
|
{
|
||||||
|
Parent::setDataField(slotName, array, value);
|
||||||
|
|
||||||
|
//Now, if it's a material slot of some fashion, set it up
|
||||||
|
StringTableEntry matSlotName = StringTable->insert("terrainMaterialAsset");
|
||||||
|
if (String(slotName).startsWith(matSlotName))
|
||||||
|
{
|
||||||
|
StringTableEntry matId = StringTable->insert(value);
|
||||||
|
|
||||||
|
mTerrMaterialAssetIds.push_back(matId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TerrainAsset::initializeAsset()
|
void TerrainAsset::initializeAsset()
|
||||||
|
|
@ -115,22 +131,20 @@ void TerrainAsset::initializeAsset()
|
||||||
// Call parent.
|
// Call parent.
|
||||||
Parent::initializeAsset();
|
Parent::initializeAsset();
|
||||||
|
|
||||||
if (!Platform::isFullPath(mTerrainFile))
|
if (!Platform::isFullPath(mTerrainFilePath))
|
||||||
mTerrainFile = getOwned() ? expandAssetFilePath(mTerrainFile) : mTerrainFile;
|
mTerrainFilePath = getOwned() ? expandAssetFilePath(mTerrainFilePath) : mTerrainFilePath;
|
||||||
|
|
||||||
//if (Platform::isFile(mTerrainFile))
|
loadTerrain();
|
||||||
// Con::executeFile(mScriptFile, false, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TerrainAsset::onAssetRefresh()
|
void TerrainAsset::onAssetRefresh()
|
||||||
{
|
{
|
||||||
mTerrainFile = expandAssetFilePath(mTerrainFile);
|
mTerrainFilePath = expandAssetFilePath(mTerrainFilePath);
|
||||||
|
|
||||||
//if (Platform::isFile(mScriptFile))
|
loadTerrain();
|
||||||
// Con::executeFile(mScriptFile, false, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TerrainAsset::setTerrainFile(const char* pScriptFile)
|
void TerrainAsset::setTerrainFilePath(const char* pScriptFile)
|
||||||
{
|
{
|
||||||
// Sanity!
|
// Sanity!
|
||||||
AssertFatal(pScriptFile != NULL, "Cannot use a NULL script file.");
|
AssertFatal(pScriptFile != NULL, "Cannot use a NULL script file.");
|
||||||
|
|
@ -139,12 +153,52 @@ void TerrainAsset::setTerrainFile(const char* pScriptFile)
|
||||||
pScriptFile = StringTable->insert(pScriptFile);
|
pScriptFile = StringTable->insert(pScriptFile);
|
||||||
|
|
||||||
// Update.
|
// Update.
|
||||||
mTerrainFile = getOwned() ? expandAssetFilePath(pScriptFile) : pScriptFile;
|
mTerrainFilePath = getOwned() ? expandAssetFilePath(pScriptFile) : pScriptFile;
|
||||||
|
|
||||||
// Refresh the asset.
|
// Refresh the asset.
|
||||||
refreshAsset();
|
refreshAsset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TerrainAsset::loadTerrain()
|
||||||
|
{
|
||||||
|
mTerrMaterialAssets.clear();
|
||||||
|
mTerrMaterialAssetIds.clear();
|
||||||
|
|
||||||
|
//First, load any material, animation, etc assets we may be referencing in our asset
|
||||||
|
// Find any asset dependencies.
|
||||||
|
AssetManager::typeAssetDependsOnHash::Iterator assetDependenciesItr = mpOwningAssetManager->getDependedOnAssets()->find(mpAssetDefinition->mAssetId);
|
||||||
|
|
||||||
|
// Does the asset have any dependencies?
|
||||||
|
if (assetDependenciesItr != mpOwningAssetManager->getDependedOnAssets()->end())
|
||||||
|
{
|
||||||
|
// Iterate all dependencies.
|
||||||
|
while (assetDependenciesItr != mpOwningAssetManager->getDependedOnAssets()->end() && assetDependenciesItr->key == mpAssetDefinition->mAssetId)
|
||||||
|
{
|
||||||
|
StringTableEntry assetType = mpOwningAssetManager->getAssetType(assetDependenciesItr->value);
|
||||||
|
|
||||||
|
if (assetType == StringTable->insert("TerrainMaterialAsset"))
|
||||||
|
{
|
||||||
|
mTerrMaterialAssetIds.push_front(assetDependenciesItr->value);
|
||||||
|
|
||||||
|
//Force the asset to become initialized if it hasn't been already
|
||||||
|
AssetPtr<TerrainMaterialAsset> matAsset = assetDependenciesItr->value;
|
||||||
|
|
||||||
|
mTerrMaterialAssets.push_front(matAsset);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Next dependency.
|
||||||
|
assetDependenciesItr++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mTerrainFile = ResourceManager::get().load(mTerrainFilePath);
|
||||||
|
|
||||||
|
if (mTerrainFile)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
void TerrainAsset::copyTo(SimObject* object)
|
void TerrainAsset::copyTo(SimObject* object)
|
||||||
|
|
@ -190,7 +244,7 @@ GuiControl* GuiInspectorTypeTerrainAssetPtr::constructEditControl()
|
||||||
|
|
||||||
TerrainAsset* matAsset = AssetDatabase.acquireAsset< TerrainAsset>(matAssetId);
|
TerrainAsset* matAsset = AssetDatabase.acquireAsset< TerrainAsset>(matAssetId);
|
||||||
|
|
||||||
TerrainMaterial* materialDef = nullptr;
|
//TerrainMaterial* materialDef = nullptr;
|
||||||
|
|
||||||
char bitmapName[512] = "tools/worldEditor/images/toolbar/shape-editor";
|
char bitmapName[512] = "tools/worldEditor/images/toolbar/shape-editor";
|
||||||
|
|
||||||
|
|
@ -268,23 +322,3 @@ bool GuiInspectorTypeTerrainAssetPtr::updateRects()
|
||||||
|
|
||||||
return resized;
|
return resized;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiInspectorTypeTerrainAssetPtr::setMaterialAsset(String assetId)
|
|
||||||
{
|
|
||||||
mTargetObject->setDataField(mCaption, "", assetId);
|
|
||||||
|
|
||||||
//force a refresh
|
|
||||||
SimObject* obj = mInspector->getInspectObject();
|
|
||||||
mInspector->inspectObject(obj);
|
|
||||||
}
|
|
||||||
|
|
||||||
DefineEngineMethod(GuiInspectorTypeTerrainAssetPtr, setMaterialAsset, void, (String assetId), (""),
|
|
||||||
"Gets a particular shape animation asset for this shape.\n"
|
|
||||||
"@param animation asset index.\n"
|
|
||||||
"@return Shape Animation Asset.\n")
|
|
||||||
{
|
|
||||||
if (assetId == String::EmptyString)
|
|
||||||
return;
|
|
||||||
|
|
||||||
return object->setMaterialAsset(assetId);
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
// IN THE SOFTWARE.
|
// IN THE SOFTWARE.
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
#pragma once
|
||||||
#ifndef TERRAINASSET_H
|
#ifndef TERRAINASSET_H
|
||||||
#define TERRAINASSET_H
|
#define TERRAINASSET_H
|
||||||
|
|
||||||
|
|
@ -46,14 +47,23 @@
|
||||||
#include "gui/editor/guiInspectorTypes.h"
|
#include "gui/editor/guiInspectorTypes.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "terrain/terrData.h"
|
//#include "terrain/terrData.h"
|
||||||
|
#include "assets/assetPtr.h"
|
||||||
|
#include "terrain/terrFile.h"
|
||||||
|
|
||||||
|
class TerrainMaterialAsset;
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
class TerrainAsset : public AssetBase
|
class TerrainAsset : public AssetBase
|
||||||
{
|
{
|
||||||
typedef AssetBase Parent;
|
typedef AssetBase Parent;
|
||||||
|
|
||||||
StringTableEntry mTerrainFile;
|
StringTableEntry mTerrainFilePath;
|
||||||
|
Resource<TerrainFile> mTerrainFile;
|
||||||
|
|
||||||
|
//Material assets we're dependent on and use
|
||||||
|
Vector<StringTableEntry> mTerrMaterialAssetIds;
|
||||||
|
Vector<AssetPtr<TerrainMaterialAsset>> mTerrMaterialAssets;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TerrainAsset();
|
TerrainAsset();
|
||||||
|
|
@ -63,8 +73,14 @@ public:
|
||||||
static void initPersistFields();
|
static void initPersistFields();
|
||||||
virtual void copyTo(SimObject* object);
|
virtual void copyTo(SimObject* object);
|
||||||
|
|
||||||
void setTerrainFile(const char* pTerrainFile);
|
virtual void setDataField(StringTableEntry slotName, const char* array, const char* value);
|
||||||
inline StringTableEntry getTerrainFile(void) const { return mTerrainFile; };
|
|
||||||
|
void setTerrainFilePath(const char* pTerrainFile);
|
||||||
|
inline StringTableEntry getTerrainFilePath(void) const { return mTerrainFilePath; };
|
||||||
|
|
||||||
|
inline Resource<TerrainFile> getTerrainResource(void) const { return mTerrainFile; };
|
||||||
|
|
||||||
|
bool loadTerrain();
|
||||||
|
|
||||||
/// Declare Console Object.
|
/// Declare Console Object.
|
||||||
DECLARE_CONOBJECT(TerrainAsset);
|
DECLARE_CONOBJECT(TerrainAsset);
|
||||||
|
|
@ -73,8 +89,8 @@ protected:
|
||||||
virtual void initializeAsset();
|
virtual void initializeAsset();
|
||||||
virtual void onAssetRefresh(void);
|
virtual void onAssetRefresh(void);
|
||||||
|
|
||||||
static bool setTerrainFile(void *obj, const char *index, const char *data) { static_cast<TerrainAsset*>(obj)->setTerrainFile(data); return false; }
|
static bool setTerrainFilePath(void *obj, const char *index, const char *data) { static_cast<TerrainAsset*>(obj)->setTerrainFilePath(data); return false; }
|
||||||
static const char* getTerrainFile(void* obj, const char* data) { return static_cast<TerrainAsset*>(obj)->getTerrainFile(); }
|
static const char* getTerrainFilePath(void* obj, const char* data) { return static_cast<TerrainAsset*>(obj)->getTerrainFilePath(); }
|
||||||
};
|
};
|
||||||
|
|
||||||
DefineConsoleType(TypeTerrainAssetPtr, TerrainAsset)
|
DefineConsoleType(TypeTerrainAssetPtr, TerrainAsset)
|
||||||
|
|
@ -96,7 +112,6 @@ public:
|
||||||
|
|
||||||
virtual GuiControl* constructEditControl();
|
virtual GuiControl* constructEditControl();
|
||||||
virtual bool updateRects();
|
virtual bool updateRects();
|
||||||
void setMaterialAsset(String assetId);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _ASSET_BASE_H_
|
#endif // _ASSET_BASE_H_
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@
|
||||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
// IN THE SOFTWARE.
|
// IN THE SOFTWARE.
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
#pragma once
|
||||||
#ifndef TERRAINMATERIALASSET_H
|
#ifndef TERRAINMATERIALASSET_H
|
||||||
#define TERRAINMATERIALASSET_H
|
#define TERRAINMATERIALASSET_H
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -240,9 +240,15 @@ LightningData::LightningData()
|
||||||
{
|
{
|
||||||
strikeSound = NULL;
|
strikeSound = NULL;
|
||||||
|
|
||||||
dMemset( strikeTextureNames, 0, sizeof( strikeTextureNames ) );
|
for (S32 i = 0; i < MaxThunders; i++)
|
||||||
dMemset( strikeTextures, 0, sizeof( strikeTextures ) );
|
thunderSounds[i] = NULL;
|
||||||
dMemset( thunderSounds, 0, sizeof( thunderSounds ) );
|
|
||||||
|
for (S32 i = 0; i < MaxTextures; i++)
|
||||||
|
{
|
||||||
|
strikeTextureNames[i] = NULL;
|
||||||
|
strikeTextures[i] = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
mNumStrikeTextures = 0;
|
mNumStrikeTextures = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -282,9 +288,10 @@ bool LightningData::preload(bool server, String &errorStr)
|
||||||
if (Parent::preload(server, errorStr) == false)
|
if (Parent::preload(server, errorStr) == false)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
dQsort(thunderSounds, MaxThunders, sizeof(SFXTrack*), cmpSounds);
|
//dQsort(thunderSounds, MaxThunders, sizeof(SFXTrack*), cmpSounds);
|
||||||
for (numThunders = 0; numThunders < MaxThunders && thunderSounds[numThunders] != NULL; numThunders++) {
|
|
||||||
//
|
for (S32 i = 0; i < MaxThunders; i++) {
|
||||||
|
if (thunderSounds[i]!= NULL) numThunders++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (server == false)
|
if (server == false)
|
||||||
|
|
@ -321,14 +328,15 @@ void LightningData::packData(BitStream* stream)
|
||||||
|
|
||||||
U32 i;
|
U32 i;
|
||||||
for (i = 0; i < MaxThunders; i++)
|
for (i = 0; i < MaxThunders; i++)
|
||||||
sfxWrite( stream, thunderSounds[ i ] );
|
{
|
||||||
|
if (stream->writeFlag(thunderSounds[i]))
|
||||||
|
sfxWrite(stream, thunderSounds[i]);
|
||||||
|
}
|
||||||
|
|
||||||
stream->writeInt(mNumStrikeTextures, 4);
|
stream->writeInt(mNumStrikeTextures, 4);
|
||||||
|
|
||||||
for (i = 0; i < MaxTextures; i++)
|
for (i = 0; i < MaxTextures; i++)
|
||||||
{
|
|
||||||
stream->writeString(strikeTextureNames[i]);
|
stream->writeString(strikeTextureNames[i]);
|
||||||
}
|
|
||||||
|
|
||||||
sfxWrite( stream, strikeSound );
|
sfxWrite( stream, strikeSound );
|
||||||
}
|
}
|
||||||
|
|
@ -339,14 +347,17 @@ void LightningData::unpackData(BitStream* stream)
|
||||||
|
|
||||||
U32 i;
|
U32 i;
|
||||||
for (i = 0; i < MaxThunders; i++)
|
for (i = 0; i < MaxThunders; i++)
|
||||||
sfxRead( stream, &thunderSounds[ i ] );
|
{
|
||||||
|
if (stream->readFlag())
|
||||||
|
sfxRead(stream, &thunderSounds[i]);
|
||||||
|
else
|
||||||
|
thunderSounds[i] = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
mNumStrikeTextures = stream->readInt(4);
|
mNumStrikeTextures = stream->readInt(4);
|
||||||
|
|
||||||
for (i = 0; i < MaxTextures; i++)
|
for (i = 0; i < MaxTextures; i++)
|
||||||
{
|
|
||||||
strikeTextureNames[i] = stream->readSTString();
|
strikeTextureNames[i] = stream->readSTString();
|
||||||
}
|
|
||||||
|
|
||||||
sfxRead( stream, &strikeSound );
|
sfxRead( stream, &strikeSound );
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -963,7 +963,8 @@ void ReflectionProbe::_onRenderViz(ObjectRenderInst *ri,
|
||||||
desc.setZReadWrite(true, false);
|
desc.setZReadWrite(true, false);
|
||||||
desc.setCullMode(GFXCullNone);
|
desc.setCullMode(GFXCullNone);
|
||||||
desc.setBlend(true);
|
desc.setBlend(true);
|
||||||
desc.fillMode = GFXFillWireframe;
|
//desc.fillMode = GFXFillWireframe;
|
||||||
|
|
||||||
// Base the sphere color on the light color.
|
// Base the sphere color on the light color.
|
||||||
ColorI color = ColorI(255, 0, 255, 63);
|
ColorI color = ColorI(255, 0, 255, 63);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -284,6 +284,78 @@ void AssetBase::refreshAsset(void)
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
S32 AssetBase::getAssetDependencyFieldCount(const char* pFieldName)
|
||||||
|
{
|
||||||
|
S32 matchedFieldCount = 0;
|
||||||
|
SimFieldDictionary* fieldDictionary = getFieldDictionary();
|
||||||
|
for (SimFieldDictionaryIterator itr(fieldDictionary); *itr; ++itr)
|
||||||
|
{
|
||||||
|
SimFieldDictionary::Entry* entry = *itr;
|
||||||
|
|
||||||
|
if (String(entry->slotName).startsWith(pFieldName))
|
||||||
|
{
|
||||||
|
matchedFieldCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return matchedFieldCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void AssetBase::clearAssetDependencyFields(const char* pFieldName)
|
||||||
|
{
|
||||||
|
SimFieldDictionary* fieldDictionary = getFieldDictionary();
|
||||||
|
for (SimFieldDictionaryIterator itr(fieldDictionary); *itr; ++itr)
|
||||||
|
{
|
||||||
|
SimFieldDictionary::Entry* entry = *itr;
|
||||||
|
|
||||||
|
if (String(entry->slotName).startsWith(pFieldName))
|
||||||
|
{
|
||||||
|
setDataField(entry->slotName, NULL, "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void AssetBase::addAssetDependencyField(const char* pFieldName, const char* pAssetId)
|
||||||
|
{
|
||||||
|
U32 existingFieldCount = getAssetDependencyFieldCount(pFieldName);
|
||||||
|
|
||||||
|
//we have a match!
|
||||||
|
char depSlotName[50];
|
||||||
|
dSprintf(depSlotName, sizeof(depSlotName), "%s%d", pFieldName, existingFieldCount);
|
||||||
|
|
||||||
|
char depValue[255];
|
||||||
|
dSprintf(depValue, sizeof(depValue), "@Asset=%s", pAssetId);
|
||||||
|
|
||||||
|
setDataField(StringTable->insert(depSlotName), NULL, StringTable->insert(depValue));
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
bool AssetBase::saveAsset()
|
||||||
|
{
|
||||||
|
// Set the format mode.
|
||||||
|
Taml taml;
|
||||||
|
|
||||||
|
// Yes, so set it.
|
||||||
|
taml.setFormatMode(Taml::getFormatModeEnum("xml"));
|
||||||
|
|
||||||
|
// Turn-off auto-formatting.
|
||||||
|
taml.setAutoFormat(false);
|
||||||
|
|
||||||
|
// Read object.
|
||||||
|
bool success = taml.write(this, AssetDatabase.getAssetFilePath(getAssetId()));
|
||||||
|
|
||||||
|
if (!success)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void AssetBase::acquireAssetReference(void)
|
void AssetBase::acquireAssetReference(void)
|
||||||
{
|
{
|
||||||
// Acquired the acquired reference count.
|
// Acquired the acquired reference count.
|
||||||
|
|
|
||||||
|
|
@ -104,6 +104,12 @@ public:
|
||||||
|
|
||||||
void refreshAsset(void);
|
void refreshAsset(void);
|
||||||
|
|
||||||
|
S32 getAssetDependencyFieldCount(const char* pFieldName);
|
||||||
|
void clearAssetDependencyFields(const char* pFieldName);
|
||||||
|
void addAssetDependencyField(const char* pFieldName, const char* pAssetId);
|
||||||
|
|
||||||
|
bool saveAsset();
|
||||||
|
|
||||||
/// Declare Console Object.
|
/// Declare Console Object.
|
||||||
DECLARE_CONOBJECT(AssetBase);
|
DECLARE_CONOBJECT(AssetBase);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Copyright (c) 2013 GarageGames, LLC
|
// Copyright (c) 2013 GarageGames, LLC
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
|
@ -39,3 +39,31 @@ DefineEngineMethod(AssetBase, getAssetId, String, (), ,
|
||||||
{
|
{
|
||||||
return object->getAssetId();
|
return object->getAssetId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DefineEngineMethod(AssetBase, getAssetDependencyFieldCount, S32, (const char* pFieldName), (""),
|
||||||
|
"Gets the assets' Asset Id. This is only available if the asset was acquired from the asset manager.\n"
|
||||||
|
"@return The assets' Asset Id.\n")
|
||||||
|
{
|
||||||
|
return object->getAssetDependencyFieldCount(pFieldName);
|
||||||
|
}
|
||||||
|
|
||||||
|
DefineEngineMethod(AssetBase, clearAssetDependencyFields, void, (const char* pFieldName), (""),
|
||||||
|
"Gets the assets' Asset Id. This is only available if the asset was acquired from the asset manager.\n"
|
||||||
|
"@return The assets' Asset Id.\n")
|
||||||
|
{
|
||||||
|
object->clearAssetDependencyFields(pFieldName);
|
||||||
|
}
|
||||||
|
|
||||||
|
DefineEngineMethod(AssetBase, addAssetDependencyField, void, (const char* pFieldName, const char* pAssetId), ("", ""),
|
||||||
|
"Gets the assets' Asset Id. This is only available if the asset was acquired from the asset manager.\n"
|
||||||
|
"@return The assets' Asset Id.\n")
|
||||||
|
{
|
||||||
|
object->addAssetDependencyField(pFieldName, pAssetId);
|
||||||
|
}
|
||||||
|
|
||||||
|
DefineEngineMethod(AssetBase, saveAsset, bool, (), ,
|
||||||
|
"Gets the assets' Asset Id. This is only available if the asset was acquired from the asset manager.\n"
|
||||||
|
"@return The assets' Asset Id.\n")
|
||||||
|
{
|
||||||
|
return object->saveAsset();
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -113,7 +113,7 @@ private:
|
||||||
std::tie(std::get<I + (sizeof...(ArgTs) - sizeof...(TailTs))>(args)...) = defaultArgs;
|
std::tie(std::get<I + (sizeof...(ArgTs) - sizeof...(TailTs))>(args)...) = defaultArgs;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(_MSC_VER) && (_MSC_VER >= 1910)
|
#if defined(_MSC_VER) && (_MSC_VER >= 1910) && (_MSC_VER < 1920)
|
||||||
template<typename ...TailTs>
|
template<typename ...TailTs>
|
||||||
struct DodgyVCHelper
|
struct DodgyVCHelper
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -109,7 +109,7 @@ VolumetricFogRTManager::~VolumetricFogRTManager()
|
||||||
void VolumetricFogRTManager::onSceneRemove()
|
void VolumetricFogRTManager::onSceneRemove()
|
||||||
{
|
{
|
||||||
if (mIsInitialized)
|
if (mIsInitialized)
|
||||||
mPlatformWindow->getScreenResChangeSignal().remove(this, &VolumetricFogRTManager::ResizeRT);
|
mPlatformWindow->resizeEvent.remove(this, &VolumetricFogRTManager::ResizeRT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VolumetricFogRTManager::onRemove()
|
void VolumetricFogRTManager::onRemove()
|
||||||
|
|
@ -148,7 +148,7 @@ bool VolumetricFogRTManager::Init()
|
||||||
}
|
}
|
||||||
|
|
||||||
mPlatformWindow = cv->getPlatformWindow();
|
mPlatformWindow = cv->getPlatformWindow();
|
||||||
mPlatformWindow->getScreenResChangeSignal().notify(this,&VolumetricFogRTManager::ResizeRT);
|
mPlatformWindow->resizeEvent.notify(this,&VolumetricFogRTManager::ResizeRT);
|
||||||
|
|
||||||
if (mTargetScale < 1 || GFX->getAdapterType() == Direct3D11)
|
if (mTargetScale < 1 || GFX->getAdapterType() == Direct3D11)
|
||||||
mTargetScale = 1;
|
mTargetScale = 1;
|
||||||
|
|
@ -205,22 +205,17 @@ U32 VolumetricFogRTManager::DecFogObjects()
|
||||||
return mNumFogObjects;
|
return mNumFogObjects;
|
||||||
}
|
}
|
||||||
|
|
||||||
void VolumetricFogRTManager::ResizeRT(PlatformWindow* win,bool resize)
|
void VolumetricFogRTManager::ResizeRT( WindowId did, S32 width, S32 height )
|
||||||
{
|
{
|
||||||
mFogHasAnswered = 0;
|
|
||||||
smVolumetricFogRTMResizeSignal.trigger(this, true);
|
smVolumetricFogRTMResizeSignal.trigger(this, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VolumetricFogRTManager::FogAnswered()
|
void VolumetricFogRTManager::FogAnswered()
|
||||||
{
|
{
|
||||||
mFogHasAnswered++;
|
if (Resize())
|
||||||
if (mFogHasAnswered == mNumFogObjects)
|
smVolumetricFogRTMResizeSignal.trigger(this, false);
|
||||||
{
|
else
|
||||||
if (Resize())
|
Con::errorf("VolumetricFogRTManager::FogAnswered - Error resizing rendertargets!");
|
||||||
smVolumetricFogRTMResizeSignal.trigger(this, false);
|
|
||||||
else
|
|
||||||
Con::errorf("VolumetricFogRTManager::FogAnswered - Error resizing rendertargets!");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool VolumetricFogRTManager::Resize()
|
bool VolumetricFogRTManager::Resize()
|
||||||
|
|
@ -279,7 +274,6 @@ S32 VolumetricFogRTManager::setQuality(U32 Quality)
|
||||||
|
|
||||||
mTargetScale = Quality;
|
mTargetScale = Quality;
|
||||||
|
|
||||||
mFogHasAnswered = 0;
|
|
||||||
smVolumetricFogRTMResizeSignal.trigger(this, true);
|
smVolumetricFogRTMResizeSignal.trigger(this, true);
|
||||||
|
|
||||||
return mTargetScale;
|
return mTargetScale;
|
||||||
|
|
|
||||||
|
|
@ -59,13 +59,12 @@ class VolumetricFogRTManager : public SceneObject
|
||||||
static S32 mTargetScale;
|
static S32 mTargetScale;
|
||||||
bool mIsInitialized;
|
bool mIsInitialized;
|
||||||
U32 mNumFogObjects;
|
U32 mNumFogObjects;
|
||||||
U32 mFogHasAnswered;
|
|
||||||
U32 mWidth;
|
U32 mWidth;
|
||||||
U32 mHeight;
|
U32 mHeight;
|
||||||
|
|
||||||
void onRemove();
|
void onRemove();
|
||||||
void onSceneRemove();
|
void onSceneRemove();
|
||||||
void ResizeRT(PlatformWindow *win, bool resize);
|
void ResizeRT(WindowId did, S32 width, S32 height);
|
||||||
|
|
||||||
static VolumetricFogRTMResizeSignal smVolumetricFogRTMResizeSignal;
|
static VolumetricFogRTMResizeSignal smVolumetricFogRTMResizeSignal;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -862,7 +862,10 @@ U8 GBitmap::getChanelValueAt(U32 x, U32 y, U32 chan)
|
||||||
{
|
{
|
||||||
ColorI pixelColor = ColorI(255,255,255,255);
|
ColorI pixelColor = ColorI(255,255,255,255);
|
||||||
getColor(x, y, pixelColor);
|
getColor(x, y, pixelColor);
|
||||||
|
if (mInternalFormat == GFXFormatL16)
|
||||||
|
{
|
||||||
|
chan = 0;
|
||||||
|
}
|
||||||
switch (chan) {
|
switch (chan) {
|
||||||
case 0: return pixelColor.red;
|
case 0: return pixelColor.red;
|
||||||
case 1: return pixelColor.green;
|
case 1: return pixelColor.green;
|
||||||
|
|
@ -1323,7 +1326,7 @@ U32 GBitmap::getSurfaceSize(const U32 mipLevel) const
|
||||||
if (mInternalFormat >= GFXFormatBC1 && mInternalFormat <= GFXFormatBC3)
|
if (mInternalFormat >= GFXFormatBC1 && mInternalFormat <= GFXFormatBC3)
|
||||||
{
|
{
|
||||||
// From the directX docs:
|
// From the directX docs:
|
||||||
// max(1, width ÷ 4) x max(1, height ÷ 4) x 8(DXT1) or 16(DXT2-5)
|
// max(1, width ÷ 4) x max(1, height ÷ 4) x 8(DXT1) or 16(DXT2-5)
|
||||||
|
|
||||||
U32 sizeMultiple = 0;
|
U32 sizeMultiple = 0;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1176,6 +1176,10 @@ void GuiTreeViewCtrl::_buildItem( Item* item, U32 tabLevel, bool bForceFullUpdat
|
||||||
else
|
else
|
||||||
item->mState.clear( Item::Filtered );
|
item->mState.clear( Item::Filtered );
|
||||||
|
|
||||||
|
//If the item should be hidden from view, check now
|
||||||
|
if (mHiddenItemsList.contains(item->mId))
|
||||||
|
item->mState.set(Item::Filtered);
|
||||||
|
|
||||||
// Is this the root item?
|
// Is this the root item?
|
||||||
const bool isRoot = item == mRoot;
|
const bool isRoot = item == mRoot;
|
||||||
|
|
||||||
|
|
@ -4477,6 +4481,18 @@ void GuiTreeViewCtrl::setItemFilterException(U32 item, bool isExempted)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GuiTreeViewCtrl::setItemHidden(U32 item, bool isHidden)
|
||||||
|
{
|
||||||
|
if (isHidden)
|
||||||
|
{
|
||||||
|
mHiddenItemsList.push_back(item);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mHiddenItemsList.remove(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void GuiTreeViewCtrl::reparentItems(Vector<Item*> selectedItems, Item* newParent)
|
void GuiTreeViewCtrl::reparentItems(Vector<Item*> selectedItems, Item* newParent)
|
||||||
{
|
{
|
||||||
for (S32 i = 0; i < selectedItems.size(); i++)
|
for (S32 i = 0; i < selectedItems.size(); i++)
|
||||||
|
|
@ -5651,6 +5667,26 @@ DefineEngineMethod(GuiTreeViewCtrl, setItemFilterException, void, (U32 item, boo
|
||||||
{
|
{
|
||||||
object->setItemFilterException(item, isExempt);
|
object->setItemFilterException(item, isExempt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DefineEngineMethod(GuiTreeViewCtrl, setItemHidden, void, (U32 item, bool hidden), (0, true),
|
||||||
|
"Set the pattern by which to filter items in the tree. Only items in the tree whose text "
|
||||||
|
"matches this pattern are displayed.\n\n"
|
||||||
|
"@param pattern New pattern based on which visible items in the tree should be filtered. If empty, all items become visible.\n\n"
|
||||||
|
"@see getFilterText\n"
|
||||||
|
"@see clearFilterText")
|
||||||
|
{
|
||||||
|
object->setItemHidden(item, hidden);
|
||||||
|
}
|
||||||
|
|
||||||
|
DefineEngineMethod(GuiTreeViewCtrl, clearHiddenItems, void, (),,
|
||||||
|
"Set the pattern by which to filter items in the tree. Only items in the tree whose text "
|
||||||
|
"matches this pattern are displayed.\n\n"
|
||||||
|
"@param pattern New pattern based on which visible items in the tree should be filtered. If empty, all items become visible.\n\n"
|
||||||
|
"@see getFilterText\n"
|
||||||
|
"@see clearFilterText")
|
||||||
|
{
|
||||||
|
object->clearHiddenItems();
|
||||||
|
}
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
DefineEngineMethod( GuiTreeViewCtrl, clearFilterText, void, (),,
|
DefineEngineMethod( GuiTreeViewCtrl, clearFilterText, void, (),,
|
||||||
|
|
|
||||||
|
|
@ -360,6 +360,7 @@ class GuiTreeViewCtrl : public GuiArrayCtrl
|
||||||
bool mDoFilterChildren;
|
bool mDoFilterChildren;
|
||||||
|
|
||||||
Vector<U32> mItemFilterExceptionList;
|
Vector<U32> mItemFilterExceptionList;
|
||||||
|
Vector<U32> mHiddenItemsList;
|
||||||
|
|
||||||
/// If true, a trace of actions taken by the control is logged to the console. Can
|
/// If true, a trace of actions taken by the control is logged to the console. Can
|
||||||
/// be turned on with the setDebug() script method.
|
/// be turned on with the setDebug() script method.
|
||||||
|
|
@ -578,6 +579,8 @@ class GuiTreeViewCtrl : public GuiArrayCtrl
|
||||||
|
|
||||||
void setFilterChildren(bool doFilter) { mDoFilterChildren = doFilter; }
|
void setFilterChildren(bool doFilter) { mDoFilterChildren = doFilter; }
|
||||||
void setItemFilterException(U32 item, bool isExempt);
|
void setItemFilterException(U32 item, bool isExempt);
|
||||||
|
void setItemHidden(U32 item, bool isHidden);
|
||||||
|
void clearHiddenItems() { mHiddenItemsList.clear(); }
|
||||||
|
|
||||||
/// Clear the current item filtering pattern.
|
/// Clear the current item filtering pattern.
|
||||||
void clearFilterText() { setFilterText( String::EmptyString ); }
|
void clearFilterText() { setFilterText( String::EmptyString ); }
|
||||||
|
|
|
||||||
|
|
@ -447,10 +447,6 @@ AdvancedLightBinManager::LightMaterialInfo* AdvancedLightBinManager::_getLightMa
|
||||||
if ( smPSSMDebugRender )
|
if ( smPSSMDebugRender )
|
||||||
shadowMacros.push_back( GFXShaderMacro( "PSSM_DEBUG_RENDER" ) );
|
shadowMacros.push_back( GFXShaderMacro( "PSSM_DEBUG_RENDER" ) );
|
||||||
|
|
||||||
// If its a vector light see if we can enable SSAO.
|
|
||||||
if ( lightType == LightInfo::Vector && smUseSSAOMask )
|
|
||||||
shadowMacros.push_back( GFXShaderMacro( "USE_SSAO_MASK" ) );
|
|
||||||
|
|
||||||
// Now create the material info object.
|
// Now create the material info object.
|
||||||
info = new LightMaterialInfo( lightMatName, smLightMatVertex[ lightType ], shadowMacros );
|
info = new LightMaterialInfo( lightMatName, smLightMatVertex[ lightType ], shadowMacros );
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -187,7 +187,7 @@ Material::Material()
|
||||||
dMemset(mCellLayout, 0, sizeof(mCellLayout));
|
dMemset(mCellLayout, 0, sizeof(mCellLayout));
|
||||||
dMemset(mCellSize, 0, sizeof(mCellSize));
|
dMemset(mCellSize, 0, sizeof(mCellSize));
|
||||||
dMemset(mNormalMapAtlas, 0, sizeof(mNormalMapAtlas));
|
dMemset(mNormalMapAtlas, 0, sizeof(mNormalMapAtlas));
|
||||||
dMemset(mUseAnisotropic, 0, sizeof(mUseAnisotropic));
|
dMemset(mUseAnisotropic, 1, sizeof(mUseAnisotropic));
|
||||||
|
|
||||||
mImposterLimits = Point4F::Zero;
|
mImposterLimits = Point4F::Zero;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -38,9 +38,16 @@
|
||||||
#include "console/consoleTypes.h"
|
#include "console/consoleTypes.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef _MODULE_DEFINITION_H
|
||||||
|
#include "module/moduleDefinition.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _STRINGFUNCTIONS_H_
|
||||||
|
#include "core/strings/stringFunctions.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
// Script bindings.
|
// Script bindings.
|
||||||
#include "moduleManager_ScriptBinding.h"
|
#include "moduleManager_ScriptBinding.h"
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
IMPLEMENT_CONOBJECT( ModuleManager );
|
IMPLEMENT_CONOBJECT( ModuleManager );
|
||||||
|
|
@ -65,6 +72,25 @@ S32 QSORT_CALLBACK moduleDefinitionVersionIdSort( const void* a, const void* b )
|
||||||
return versionId1 > versionId2 ? -1 : versionId1 < versionId2 ? 1 : 0;
|
return versionId1 > versionId2 ? -1 : versionId1 < versionId2 ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
S32 QSORT_CALLBACK moduleDependencySort(const void* a, const void* b)
|
||||||
|
{
|
||||||
|
// Fetch module definitions.
|
||||||
|
ModuleDefinition* pDefinition1 = *(ModuleDefinition * *)a;
|
||||||
|
ModuleDefinition* pDefinition2 = *(ModuleDefinition * *)b;
|
||||||
|
|
||||||
|
// Fetch version Ids.
|
||||||
|
ModuleDefinition::typeModuleDependencyVector moduleDependencies = pDefinition1->getDependencies();
|
||||||
|
bool foundDependant = false;
|
||||||
|
for (ModuleDefinition::typeModuleDependencyVector::const_iterator dependencyItr = moduleDependencies.begin(); dependencyItr != moduleDependencies.end(); ++dependencyItr)
|
||||||
|
{
|
||||||
|
if (dStrcmp(dependencyItr->mModuleId, pDefinition2->getModuleId())
|
||||||
|
&& (dependencyItr->mVersionId == pDefinition2->getVersionId()))
|
||||||
|
foundDependant = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return foundDependant ? 1 : -1;
|
||||||
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
ModuleManager::ModuleManager() :
|
ModuleManager::ModuleManager() :
|
||||||
|
|
@ -1087,6 +1113,7 @@ void ModuleManager::findModules( const bool loadedOnly, typeConstModuleDefinitio
|
||||||
moduleDefinitions.push_back( pModuleDefinition );
|
moduleDefinitions.push_back( pModuleDefinition );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
dQsort(moduleDefinitions.address(), moduleDefinitions.size(), sizeof(ModuleDefinition*), moduleDependencySort);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -314,3 +314,76 @@ S32 PostEffectManager::_effectPrioritySort( PostEffect* const *e1, PostEffect* c
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PostEffectManager::dumpActivePostFX()
|
||||||
|
{
|
||||||
|
EffectVector effects;
|
||||||
|
|
||||||
|
for (U32 i = 0; i < mEndOfFrameList.size(); i++)
|
||||||
|
{
|
||||||
|
PostEffect* effect = mEndOfFrameList[i];
|
||||||
|
|
||||||
|
if(effect->isEnabled())
|
||||||
|
effects.push_back(effect);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (U32 i = 0; i < mAfterDiffuseList.size(); i++)
|
||||||
|
{
|
||||||
|
PostEffect* effect = mAfterDiffuseList[i];
|
||||||
|
|
||||||
|
if (effect->isEnabled())
|
||||||
|
effects.push_back(effect);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Now check the bin maps.
|
||||||
|
EffectMap::Iterator mapIter = mAfterBinMap.begin();
|
||||||
|
for (; mapIter != mAfterBinMap.end(); mapIter++)
|
||||||
|
{
|
||||||
|
EffectVector& ef = mapIter->value;
|
||||||
|
|
||||||
|
for (U32 i = 0; i < ef.size(); i++)
|
||||||
|
{
|
||||||
|
PostEffect* effect = ef[i];
|
||||||
|
|
||||||
|
if (effect->isEnabled())
|
||||||
|
effects.push_back(effect);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mapIter = mBeforeBinMap.begin();
|
||||||
|
for (; mapIter != mBeforeBinMap.end(); mapIter++)
|
||||||
|
{
|
||||||
|
EffectVector& ef = mapIter->value;
|
||||||
|
|
||||||
|
for (U32 i = 0; i < ef.size(); i++)
|
||||||
|
{
|
||||||
|
PostEffect* effect = ef[i];
|
||||||
|
|
||||||
|
if (effect->isEnabled())
|
||||||
|
effects.push_back(effect);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Resort the effects by priority.
|
||||||
|
effects.sort(&_effectPrioritySort);
|
||||||
|
|
||||||
|
Con::printf("PostEffectManager::dumpActivePostFX() - Beginning Dump");
|
||||||
|
|
||||||
|
for (U32 i = 0; i < effects.size(); i++)
|
||||||
|
{
|
||||||
|
PostEffect* effect = effects[i];
|
||||||
|
|
||||||
|
if (effect->isEnabled())
|
||||||
|
{
|
||||||
|
Con::printf("%s", effect->getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Con::printf("PostEffectManager::dumpActivePostFX() - Ending Dump");
|
||||||
|
}
|
||||||
|
|
||||||
|
DefineEngineFunction(dumpActivePostFX, void, (),, "")
|
||||||
|
{
|
||||||
|
PFXMGR->dumpActivePostFX();
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -132,9 +132,11 @@ public:
|
||||||
|
|
||||||
// For ManagedSingleton.
|
// For ManagedSingleton.
|
||||||
static const char* getSingletonName() { return "PostEffectManager"; }
|
static const char* getSingletonName() { return "PostEffectManager"; }
|
||||||
|
|
||||||
|
void dumpActivePostFX();
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Returns the PostEffectManager singleton.
|
/// Returns the PostEffectManager singleton.
|
||||||
#define PFXMGR ManagedSingleton<PostEffectManager>::instance()
|
#define PFXMGR ManagedSingleton<PostEffectManager>::instance()
|
||||||
|
|
||||||
#endif // _POSTEFFECTMANAGER_H_
|
#endif // _POSTEFFECTMANAGER_H_
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@
|
||||||
#include "renderInstance/renderDeferredMgr.h"
|
#include "renderInstance/renderDeferredMgr.h"
|
||||||
#include "math/mPolyhedron.impl.h"
|
#include "math/mPolyhedron.impl.h"
|
||||||
#include "gfx/gfxTransformSaver.h"
|
#include "gfx/gfxTransformSaver.h"
|
||||||
|
#include "lighting/advanced/advancedLightBinManager.h" //for ssao
|
||||||
#include "gfx/gfxDebugEvent.h"
|
#include "gfx/gfxDebugEvent.h"
|
||||||
#include "shaderGen/shaderGenVars.h"
|
#include "shaderGen/shaderGenVars.h"
|
||||||
#include "materials/shaderData.h"
|
#include "materials/shaderData.h"
|
||||||
|
|
@ -752,6 +752,24 @@ void RenderProbeMgr::render( SceneRenderState *state )
|
||||||
mProbeArrayEffect->setShaderMacro("SKYLIGHT_ONLY", "1");
|
mProbeArrayEffect->setShaderMacro("SKYLIGHT_ONLY", "1");
|
||||||
else
|
else
|
||||||
mProbeArrayEffect->setShaderMacro("SKYLIGHT_ONLY", "0");
|
mProbeArrayEffect->setShaderMacro("SKYLIGHT_ONLY", "0");
|
||||||
|
|
||||||
|
//ssao mask
|
||||||
|
if (AdvancedLightBinManager::smUseSSAOMask)
|
||||||
|
{
|
||||||
|
//find ssaoMask
|
||||||
|
NamedTexTargetRef ssaoTarget = NamedTexTarget::find("ssaoMask");
|
||||||
|
GFXTextureObject* pTexObj = ssaoTarget->getTexture();
|
||||||
|
if (pTexObj)
|
||||||
|
{
|
||||||
|
mProbeArrayEffect->setShaderMacro("USE_SSAO_MASK");
|
||||||
|
mProbeArrayEffect->setTexture(6, pTexObj);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mProbeArrayEffect->setTexture(6, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
mProbeArrayEffect->setTexture(3, mBRDFTexture);
|
mProbeArrayEffect->setTexture(3, mBRDFTexture);
|
||||||
mProbeArrayEffect->setCubemapArrayTexture(4, mPrefilterArray);
|
mProbeArrayEffect->setCubemapArrayTexture(4, mPrefilterArray);
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@
|
||||||
#include "T3D/physics/physicsCollision.h"
|
#include "T3D/physics/physicsCollision.h"
|
||||||
#include "console/engineAPI.h"
|
#include "console/engineAPI.h"
|
||||||
|
|
||||||
#include "console/engineAPI.h"
|
#include "T3D/assets/TerrainMaterialAsset.h"
|
||||||
using namespace Torque;
|
using namespace Torque;
|
||||||
|
|
||||||
IMPLEMENT_CO_NETOBJECT_V1(TerrainBlock);
|
IMPLEMENT_CO_NETOBJECT_V1(TerrainBlock);
|
||||||
|
|
@ -207,6 +207,9 @@ TerrainBlock::TerrainBlock()
|
||||||
mNetFlags.set(Ghostable | ScopeAlways);
|
mNetFlags.set(Ghostable | ScopeAlways);
|
||||||
mIgnoreZodiacs = false;
|
mIgnoreZodiacs = false;
|
||||||
zode_primBuffer = 0;
|
zode_primBuffer = 0;
|
||||||
|
|
||||||
|
mTerrainAsset = StringTable->EmptyString();
|
||||||
|
mTerrainAssetId = StringTable->EmptyString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -352,17 +355,90 @@ void TerrainBlock::setFile(const Resource<TerrainFile>& terr)
|
||||||
mTerrFileName = terr.getPath();
|
mTerrFileName = terr.getPath();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TerrainBlock::setTerrainAsset(const StringTableEntry terrainAssetId)
|
||||||
|
{
|
||||||
|
mTerrainAssetId = terrainAssetId;
|
||||||
|
mTerrainAsset = mTerrainAssetId;
|
||||||
|
|
||||||
|
if (mTerrainAsset.isNull())
|
||||||
|
{
|
||||||
|
Con::errorf("[TerrainBlock] Failed to load terrain asset.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Resource<TerrainFile> file = mTerrainAsset->getTerrainResource();
|
||||||
|
if (!file)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
setFile(file);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool TerrainBlock::save(const char *filename)
|
bool TerrainBlock::save(const char *filename)
|
||||||
{
|
{
|
||||||
return mFile->save(filename);
|
return mFile->save(filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TerrainBlock::saveAsset()
|
||||||
|
{
|
||||||
|
if (!mTerrainAsset.isNull() && mTerrainAsset->isAssetValid())
|
||||||
|
{
|
||||||
|
mTerrainAsset->clearAssetDependencyFields("terrainMaterailAsset");
|
||||||
|
|
||||||
|
AssetQuery* pAssetQuery = new AssetQuery();
|
||||||
|
AssetDatabase.findAssetType(pAssetQuery, "TerrainMaterialAsset");
|
||||||
|
|
||||||
|
TerrainBlock* clientTerr = static_cast<TerrainBlock*>(getClientObject());
|
||||||
|
|
||||||
|
for (U32 i = 0; i < pAssetQuery->mAssetList.size(); i++)
|
||||||
|
{
|
||||||
|
//Acquire it so we can check it for matches
|
||||||
|
AssetPtr<TerrainMaterialAsset> terrMatAsset = pAssetQuery->mAssetList[i];
|
||||||
|
|
||||||
|
for (U32 m = 0; m < clientTerr->mFile->mMaterials.size(); m++)
|
||||||
|
{
|
||||||
|
StringTableEntry intMatName = clientTerr->mFile->mMaterials[m]->getInternalName();
|
||||||
|
|
||||||
|
StringTableEntry assetMatDefName = terrMatAsset->getMaterialDefinitionName();
|
||||||
|
if (assetMatDefName == intMatName)
|
||||||
|
{
|
||||||
|
mTerrainAsset->addAssetDependencyField("terrainMaterailAsset", terrMatAsset.getAssetId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
terrMatAsset.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
pAssetQuery->destroySelf();
|
||||||
|
|
||||||
|
bool saveAssetSuccess = mTerrainAsset->saveAsset();
|
||||||
|
|
||||||
|
if (!saveAssetSuccess)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return mFile->save(mTerrainAsset->getTerrainFilePath());
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool TerrainBlock::_setTerrainFile( void *obj, const char *index, const char *data )
|
bool TerrainBlock::_setTerrainFile( void *obj, const char *index, const char *data )
|
||||||
{
|
{
|
||||||
static_cast<TerrainBlock*>( obj )->setFile( FileName( data ) );
|
static_cast<TerrainBlock*>( obj )->setFile( FileName( data ) );
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TerrainBlock::_setTerrainAsset(void* obj, const char* index, const char* data)
|
||||||
|
{
|
||||||
|
TerrainBlock* terr = static_cast<TerrainBlock*>(obj);// ->setFile(FileName(data));
|
||||||
|
|
||||||
|
terr->setTerrainAsset(StringTable->insert(data));
|
||||||
|
|
||||||
|
terr->setMaskBits(FileMask | HeightMapChangeMask);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void TerrainBlock::_updateBounds()
|
void TerrainBlock::_updateBounds()
|
||||||
{
|
{
|
||||||
if ( !mFile )
|
if ( !mFile )
|
||||||
|
|
@ -901,31 +977,50 @@ bool TerrainBlock::onAdd()
|
||||||
if(!Parent::onAdd())
|
if(!Parent::onAdd())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( mTerrFileName.isEmpty() )
|
Resource<TerrainFile> terr;
|
||||||
|
|
||||||
|
if (!mTerrainAsset.isNull())
|
||||||
{
|
{
|
||||||
mTerrFileName = Con::getVariable( "$Client::MissionFile" );
|
terr = mTerrainAsset->getTerrainResource();
|
||||||
String terrainDirectory( Con::getVariable( "$pref::Directories::Terrain" ) );
|
|
||||||
if ( terrainDirectory.isEmpty() )
|
if (terr == NULL)
|
||||||
{
|
{
|
||||||
terrainDirectory = "art/terrains/";
|
if (isClientObject())
|
||||||
|
NetConnection::setLastError("Unable to load terrain asset: %s", mTerrainAsset.getAssetId());
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
mTerrFileName.replace("tools/levels/", terrainDirectory);
|
|
||||||
mTerrFileName.replace("levels/", terrainDirectory);
|
|
||||||
|
|
||||||
Vector<String> materials;
|
mFile = terr;
|
||||||
materials.push_back( "warning_material" );
|
|
||||||
TerrainFile::create( &mTerrFileName, 256, materials );
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
Resource<TerrainFile> terr = ResourceManager::get().load( mTerrFileName );
|
|
||||||
if(terr == NULL)
|
|
||||||
{
|
{
|
||||||
if(isClientObject())
|
if (mTerrFileName.isEmpty())
|
||||||
NetConnection::setLastError("You are missing a file needed to play this mission: %s", mTerrFileName.c_str());
|
{
|
||||||
return false;
|
mTerrFileName = Con::getVariable("$Client::MissionFile");
|
||||||
}
|
String terrainDirectory(Con::getVariable("$pref::Directories::Terrain"));
|
||||||
|
if (terrainDirectory.isEmpty())
|
||||||
|
{
|
||||||
|
terrainDirectory = "art/terrains/";
|
||||||
|
}
|
||||||
|
mTerrFileName.replace("tools/levels/", terrainDirectory);
|
||||||
|
mTerrFileName.replace("levels/", terrainDirectory);
|
||||||
|
|
||||||
setFile( terr );
|
Vector<String> materials;
|
||||||
|
materials.push_back("warning_material");
|
||||||
|
TerrainFile::create(&mTerrFileName, 256, materials);
|
||||||
|
}
|
||||||
|
|
||||||
|
terr = ResourceManager::get().load(mTerrFileName);
|
||||||
|
|
||||||
|
if (terr == NULL)
|
||||||
|
{
|
||||||
|
if (isClientObject())
|
||||||
|
NetConnection::setLastError("You are missing a file needed to play this mission: %s", mTerrFileName.c_str());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
setFile(terr);
|
||||||
|
}
|
||||||
|
|
||||||
if ( terr->mNeedsResaving )
|
if ( terr->mNeedsResaving )
|
||||||
{
|
{
|
||||||
|
|
@ -1125,7 +1220,11 @@ void TerrainBlock::setScale( const VectorF &scale )
|
||||||
void TerrainBlock::initPersistFields()
|
void TerrainBlock::initPersistFields()
|
||||||
{
|
{
|
||||||
addGroup( "Media" );
|
addGroup( "Media" );
|
||||||
|
|
||||||
|
addProtectedField("terrainAsset", TypeTerrainAssetPtr, Offset(mTerrainAsset, TerrainBlock),
|
||||||
|
&TerrainBlock::_setTerrainAsset, &defaultProtectedGetFn,
|
||||||
|
"The source terrain data asset.");
|
||||||
|
|
||||||
addProtectedField( "terrainFile", TypeStringFilename, Offset( mTerrFileName, TerrainBlock ),
|
addProtectedField( "terrainFile", TypeStringFilename, Offset( mTerrFileName, TerrainBlock ),
|
||||||
&TerrainBlock::_setTerrainFile, &defaultProtectedGetFn,
|
&TerrainBlock::_setTerrainFile, &defaultProtectedGetFn,
|
||||||
"The source terrain data file." );
|
"The source terrain data file." );
|
||||||
|
|
@ -1310,6 +1409,16 @@ DefineEngineMethod( TerrainBlock, save, bool, ( const char* fileName),,
|
||||||
return static_cast<TerrainBlock*>(object)->save(filename);
|
return static_cast<TerrainBlock*>(object)->save(filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DefineEngineMethod(TerrainBlock, saveAsset, bool, (), ,
|
||||||
|
"@brief Saves the terrain block's terrain file to the specified file name.\n\n"
|
||||||
|
|
||||||
|
"@param fileName Name and path of file to save terrain data to.\n\n"
|
||||||
|
|
||||||
|
"@return True if file save was successful, false otherwise")
|
||||||
|
{
|
||||||
|
return static_cast<TerrainBlock*>(object)->saveAsset();
|
||||||
|
}
|
||||||
|
|
||||||
//ConsoleMethod(TerrainBlock, save, bool, 3, 3, "(string fileName) - saves the terrain block's terrain file to the specified file name.")
|
//ConsoleMethod(TerrainBlock, save, bool, 3, 3, "(string fileName) - saves the terrain block's terrain file to the specified file name.")
|
||||||
//{
|
//{
|
||||||
// char filename[256];
|
// char filename[256];
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,12 @@
|
||||||
#include "gfx/gfxPrimitiveBuffer.h"
|
#include "gfx/gfxPrimitiveBuffer.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef _ASSET_PTR_H_
|
||||||
|
#include "assets/assetPtr.h"
|
||||||
|
#endif
|
||||||
|
#ifndef TERRAINASSET_H
|
||||||
|
#include "T3D/assets/TerrainAsset.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
class GBitmap;
|
class GBitmap;
|
||||||
class TerrainBlock;
|
class TerrainBlock;
|
||||||
|
|
@ -120,6 +125,9 @@ protected:
|
||||||
|
|
||||||
///
|
///
|
||||||
FileName mTerrFileName;
|
FileName mTerrFileName;
|
||||||
|
|
||||||
|
AssetPtr<TerrainAsset> mTerrainAsset;
|
||||||
|
StringTableEntry mTerrainAssetId;
|
||||||
|
|
||||||
/// The maximum detail distance found in the material list.
|
/// The maximum detail distance found in the material list.
|
||||||
F32 mMaxDetailDistance;
|
F32 mMaxDetailDistance;
|
||||||
|
|
@ -241,6 +249,7 @@ protected:
|
||||||
|
|
||||||
// Protected fields
|
// Protected fields
|
||||||
static bool _setTerrainFile( void *obj, const char *index, const char *data );
|
static bool _setTerrainFile( void *obj, const char *index, const char *data );
|
||||||
|
static bool _setTerrainAsset(void* obj, const char* index, const char* data);
|
||||||
static bool _setSquareSize( void *obj, const char *index, const char *data );
|
static bool _setSquareSize( void *obj, const char *index, const char *data );
|
||||||
static bool _setBaseTexSize(void *obj, const char *index, const char *data);
|
static bool _setBaseTexSize(void *obj, const char *index, const char *data);
|
||||||
static bool _setBaseTexFormat(void *obj, const char *index, const char *data);
|
static bool _setBaseTexFormat(void *obj, const char *index, const char *data);
|
||||||
|
|
@ -418,7 +427,10 @@ public:
|
||||||
|
|
||||||
void setFile(const Resource<TerrainFile>& file);
|
void setFile(const Resource<TerrainFile>& file);
|
||||||
|
|
||||||
|
bool setTerrainAsset(const StringTableEntry terrainAssetId);
|
||||||
|
|
||||||
bool save(const char* filename);
|
bool save(const char* filename);
|
||||||
|
bool saveAsset();
|
||||||
|
|
||||||
F32 getSquareSize() const { return mSquareSize; }
|
F32 getSquareSize() const { return mSquareSize; }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -97,7 +97,7 @@ void TerrainMaterial::initPersistFields()
|
||||||
addField( "parallaxScale", TypeF32, Offset( mParallaxScale, TerrainMaterial ), "Used to scale the height from the normal map to give some self "
|
addField( "parallaxScale", TypeF32, Offset( mParallaxScale, TerrainMaterial ), "Used to scale the height from the normal map to give some self "
|
||||||
"occlusion effect (aka parallax) to the terrain material" );
|
"occlusion effect (aka parallax) to the terrain material" );
|
||||||
|
|
||||||
addField("compositeMap", TypeStringFilename, Offset(mCompositeMap, TerrainMaterial), "Composite map for the material");
|
addField("pbrConfigMap", TypeStringFilename, Offset(mCompositeMap, TerrainMaterial), "Composite map for the material");
|
||||||
Parent::initPersistFields();
|
Parent::initPersistFields();
|
||||||
|
|
||||||
// Gotta call this at least once or it won't get created!
|
// Gotta call this at least once or it won't get created!
|
||||||
|
|
|
||||||
|
|
@ -353,7 +353,7 @@ void PlatformWindowManagerSDL::_process()
|
||||||
|
|
||||||
char* fileName = evt.drop.file;
|
char* fileName = evt.drop.file;
|
||||||
|
|
||||||
if (!Platform::isFile(fileName))
|
if (!Platform::isDirectory(fileName) && !Platform::isFile(fileName))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
Con::executef("onDropFile", StringTable->insert(fileName));
|
Con::executef("onDropFile", StringTable->insert(fileName));
|
||||||
|
|
|
||||||
|
|
@ -277,7 +277,7 @@ void Win32Window::setVideoMode( const GFXVideoMode &mode )
|
||||||
mOwningManager->raiseCurtain();
|
mOwningManager->raiseCurtain();
|
||||||
|
|
||||||
SetForegroundWindow( getHWND() );
|
SetForegroundWindow( getHWND() );
|
||||||
getScreenResChangeSignal().trigger( this, true );
|
resizeEvent.trigger( this, true );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Win32Window::clearFullscreen()
|
bool Win32Window::clearFullscreen()
|
||||||
|
|
@ -806,7 +806,7 @@ LRESULT PASCAL Win32Window::WindowProc( HWND hWnd, UINT message, WPARAM wParam,
|
||||||
window->getGFXTarget()->resetMode();
|
window->getGFXTarget()->resetMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
window->getScreenResChangeSignal().trigger(window, true);
|
window->resizeEvent.trigger(window, true);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,73 @@
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
// Phase 1
|
// Phase 1
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
function clientCmdMissionStartPhase1(%seq, %missionName)
|
$pref::Client::EnableDatablockCache = true;
|
||||||
|
$pref::Client::DatablockCacheFilename = "data/cache/client/datablock_cache_c.dbc";
|
||||||
|
|
||||||
|
function clientCmdMissionStartPhase1_LoadCache(%seq, %missionName)
|
||||||
|
{
|
||||||
|
if ($pref::Client::EnableDatablockCache && $loadFromDatablockCache)
|
||||||
|
{
|
||||||
|
if (!$pref::Video::disableVerticalSync)
|
||||||
|
{
|
||||||
|
warn("Disabling Vertical Sync during datablock cache load to avoid significant slowdown.");
|
||||||
|
$AFX_tempDisableVSync = true;
|
||||||
|
|
||||||
|
$pref::Video::disableVerticalSync = true;
|
||||||
|
Canvas.resetVideoMode();
|
||||||
|
}
|
||||||
|
|
||||||
|
echo("<<<< Loading Datablocks From Cache >>>>");
|
||||||
|
if (ServerConnection.loadDatablockCache_Begin())
|
||||||
|
{
|
||||||
|
schedule(10, 0, "updateLoadDatablockCacheProgress", %seq, %missionName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateLoadDatablockCacheProgress(%seq, %missionName)
|
||||||
|
{
|
||||||
|
if (ServerConnection.loadDatablockCache_Continue())
|
||||||
|
{
|
||||||
|
$loadDatablockCacheProgressThread = schedule(10, 0, "updateLoadDatablockCacheProgress", %seq, %missionName);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($AFX_tempDisableVSync)
|
||||||
|
{
|
||||||
|
warn("Restoring Vertical Sync setting.");
|
||||||
|
$AFX_tempDisableVSync = false;
|
||||||
|
|
||||||
|
$pref::Video::disableVerticalSync = false;
|
||||||
|
Canvas.resetVideoMode();
|
||||||
|
}
|
||||||
|
|
||||||
|
echo("<<<< Finished Loading Datablocks From Cache >>>>");
|
||||||
|
clientCmdMissionStartPhase2(%seq,%missionName);
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateLoadDatablockCacheProgress(%seq, %missionName)
|
||||||
|
{
|
||||||
|
if (ServerConnection.loadDatablockCache_Continue())
|
||||||
|
{
|
||||||
|
$loadDatablockCacheProgressThread = schedule(10, 0, "updateLoadDatablockCacheProgress", %seq, %missionName);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($AFX_tempDisableVSync)
|
||||||
|
{
|
||||||
|
warn("Restoring Vertical Sync setting.");
|
||||||
|
$AFX_tempDisableVSync = false;
|
||||||
|
|
||||||
|
$pref::Video::disableVerticalSync = false;
|
||||||
|
Canvas.resetVideoMode();
|
||||||
|
}
|
||||||
|
|
||||||
|
echo("<<<< Finished Loading Datablocks From Cache >>>>");
|
||||||
|
clientCmdMissionStartPhase2(%seq,%missionName);
|
||||||
|
}
|
||||||
|
|
||||||
|
function clientCmdMissionStartPhase1(%seq, %missionName, %cache_crc)
|
||||||
{
|
{
|
||||||
// These need to come after the cls.
|
// These need to come after the cls.
|
||||||
echo ("*** New Mission: " @ %missionName);
|
echo ("*** New Mission: " @ %missionName);
|
||||||
|
|
@ -61,6 +127,56 @@ function clientCmdMissionStartPhase1(%seq, %missionName)
|
||||||
PostFXManager::settingsApplyDefaultPreset();
|
PostFXManager::settingsApplyDefaultPreset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$loadFromDatablockCache = false;
|
||||||
|
if ($pref::Client::EnableDatablockCache)
|
||||||
|
{
|
||||||
|
%cache_filename = $pref::Client::DatablockCacheFilename;
|
||||||
|
|
||||||
|
// if cache CRC is provided, check for validity
|
||||||
|
if (%cache_crc !$= "")
|
||||||
|
{
|
||||||
|
// check for existence of cache file
|
||||||
|
if (isFile(%cache_filename))
|
||||||
|
{
|
||||||
|
// here we are not comparing the CRC of the cache itself, but the CRC of
|
||||||
|
// the server cache (stored in the header) when these datablocks were
|
||||||
|
// transmitted.
|
||||||
|
%my_cache_crc = extractDatablockCacheCRC(%cache_filename);
|
||||||
|
echo("<<<< client cache CRC:" SPC %my_cache_crc SPC ">>>>");
|
||||||
|
echo("<<<< comparing CRC codes:" SPC "s:" @ %cache_crc SPC "c:" @ %my_cache_crc SPC ">>>>");
|
||||||
|
if (%my_cache_crc == %cache_crc)
|
||||||
|
{
|
||||||
|
echo("<<<< cache CRC codes match, datablocks will be loaded from local cache. >>>>");
|
||||||
|
$loadFromDatablockCache = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo("<<<< cache CRC codes differ, datablocks will be transmitted and cached. >>>>" SPC %cache_crc);
|
||||||
|
setDatablockCacheCRC(%cache_crc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo("<<<< client datablock cache does not exist, datablocks will be transmitted and cached. >>>>");
|
||||||
|
setDatablockCacheCRC(%cache_crc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo("<<<< server datablock caching is disabled, datablocks will be transmitted. >>>>");
|
||||||
|
}
|
||||||
|
if ($loadFromDatablockCache)
|
||||||
|
{
|
||||||
|
// skip datablock transmission and initiate a cache load
|
||||||
|
commandToServer('MissionStartPhase1Ack_UseCache', %seq);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (%cache_crc !$= "")
|
||||||
|
{
|
||||||
|
echo("<<<< client datablock caching is disabled, datablocks will be transmitted. >>>>");
|
||||||
|
}
|
||||||
|
|
||||||
onMissionDownloadPhase("LOADING DATABLOCKS");
|
onMissionDownloadPhase("LOADING DATABLOCKS");
|
||||||
|
|
||||||
commandToServer('MissionStartPhase1Ack', %seq);
|
commandToServer('MissionStartPhase1Ack', %seq);
|
||||||
|
|
@ -164,7 +280,7 @@ function connect(%server)
|
||||||
{
|
{
|
||||||
%conn = new GameConnection(ServerConnection);
|
%conn = new GameConnection(ServerConnection);
|
||||||
RootGroup.add(ServerConnection);
|
RootGroup.add(ServerConnection);
|
||||||
%conn.setConnectArgs($pref::Player::Name);
|
%conn.setConnectArgs($pref::Player::Name, $ConncetInfoKey);
|
||||||
%conn.setJoinPassword($Client::Password);
|
%conn.setJoinPassword($Client::Password);
|
||||||
%conn.connect(%server);
|
%conn.connect(%server);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -46,8 +46,6 @@ $Pref::Server::ConnectionError =
|
||||||
// overrides pref::net::port for dedicated servers
|
// overrides pref::net::port for dedicated servers
|
||||||
$Pref::Server::Port = 28000;
|
$Pref::Server::Port = 28000;
|
||||||
|
|
||||||
$Pref::Server::EnableDatablockCache = true;
|
|
||||||
$Pref::Server::DatablockCacheFilename = "core/clientServer/scripts/server/afx/cache/afx_datablock_cache.dbc";
|
|
||||||
|
|
||||||
// If the password is set, clients must provide it in order
|
// If the password is set, clients must provide it in order
|
||||||
// to connect to the server
|
// to connect to the server
|
||||||
|
|
|
||||||
|
|
@ -38,8 +38,26 @@
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
// Phase 1
|
// Phase 1
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
$Pref::Server::EnableDatablockCache = true;
|
||||||
|
$pref::Server::DatablockCacheFilename = "data/cache/server/datablock_cache_c.dbc";
|
||||||
function GameConnection::loadMission(%this)
|
function GameConnection::loadMission(%this)
|
||||||
{
|
{
|
||||||
|
%cache_crc = "";
|
||||||
|
|
||||||
|
if ($Pref::Server::EnableDatablockCache)
|
||||||
|
{
|
||||||
|
if (!isDatablockCacheSaved())
|
||||||
|
{
|
||||||
|
echo("<<<< saving server datablock cache >>>>");
|
||||||
|
%this.saveDatablockCache();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isFile($Pref::Server::DatablockCacheFilename))
|
||||||
|
{
|
||||||
|
%cache_crc = getDatablockCacheCRC();
|
||||||
|
echo(" <<<< sending CRC to client:" SPC %cache_crc SPC ">>>>");
|
||||||
|
}
|
||||||
|
}
|
||||||
// Send over the information that will display the server info
|
// Send over the information that will display the server info
|
||||||
// when we learn it got there, we'll send the data blocks
|
// when we learn it got there, we'll send the data blocks
|
||||||
%this.currentPhase = 0;
|
%this.currentPhase = 0;
|
||||||
|
|
@ -50,12 +68,41 @@ function GameConnection::loadMission(%this)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
commandToClient(%this, 'MissionStartPhase1', $missionSequence, $Server::MissionFile);
|
commandToClient(%this, 'MissionStartPhase1', $missionSequence, $Server::MissionFile, %cache_crc);
|
||||||
|
|
||||||
echo("*** Sending mission load to client: " @ $Server::MissionFile);
|
echo("*** Sending mission load to client: " @ $Server::MissionFile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function serverCmdMissionStartPhase1Ack_UseCache(%client, %seq)
|
||||||
|
{
|
||||||
|
echo("<<<< client will load datablocks from a cache >>>>");
|
||||||
|
echo(" <<<< skipping datablock transmission >>>>");
|
||||||
|
|
||||||
|
// Make sure to ignore calls from a previous mission load
|
||||||
|
if (%seq != $missionSequence || !$MissionRunning)
|
||||||
|
return;
|
||||||
|
if (%client.currentPhase != 0)
|
||||||
|
return;
|
||||||
|
%client.currentPhase = 1;
|
||||||
|
|
||||||
|
// Start with the CRC
|
||||||
|
%client.setMissionCRC( $missionCRC );
|
||||||
|
|
||||||
|
%client.onBeginDatablockCacheLoad($missionSequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
function GameConnection::onBeginDatablockCacheLoad( %this, %missionSequence )
|
||||||
|
{
|
||||||
|
// Make sure to ignore calls from a previous mission load
|
||||||
|
if (%missionSequence != $missionSequence)
|
||||||
|
return;
|
||||||
|
if (%this.currentPhase != 1)
|
||||||
|
return;
|
||||||
|
%this.currentPhase = 1.5;
|
||||||
|
commandToClient(%this, 'MissionStartPhase1_LoadCache', $missionSequence, $Server::MissionFile);
|
||||||
|
}
|
||||||
|
|
||||||
function serverCmdMissionStartPhase1Ack(%client, %seq)
|
function serverCmdMissionStartPhase1Ack(%client, %seq)
|
||||||
{
|
{
|
||||||
// Make sure to ignore calls from a previous mission load
|
// Make sure to ignore calls from a previous mission load
|
||||||
|
|
@ -157,14 +204,6 @@ function serverCmdMissionStartPhase3Ack(%client, %seq)
|
||||||
// Set the control object to the default camera
|
// Set the control object to the default camera
|
||||||
if (!isObject(%client.camera))
|
if (!isObject(%client.camera))
|
||||||
{
|
{
|
||||||
if(!isObject(Observer))
|
|
||||||
{
|
|
||||||
datablock CameraData(Observer)
|
|
||||||
{
|
|
||||||
mode = "Observer";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
//if (isDefined("$Game::DefaultCameraClass"))
|
//if (isDefined("$Game::DefaultCameraClass"))
|
||||||
%client.camera = spawnObject("Camera", Observer);
|
%client.camera = spawnObject("Camera", Observer);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -204,10 +204,11 @@ function onServerCreated()
|
||||||
|
|
||||||
loadDatablockFiles( DatablockFilesList, true );
|
loadDatablockFiles( DatablockFilesList, true );
|
||||||
|
|
||||||
|
callOnModules("onServerScriptExec", "Core");
|
||||||
|
callOnModules("onServerScriptExec", "Game");
|
||||||
|
|
||||||
// Keep track of when the game started
|
// Keep track of when the game started
|
||||||
$Game::StartTime = $Sim::Time;
|
$Game::StartTime = $Sim::Time;
|
||||||
|
|
||||||
onServerCreatedAFX();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Shut down the server
|
/// Shut down the server
|
||||||
|
|
@ -283,6 +284,9 @@ function onServerDestroyed()
|
||||||
MissionCleanup.delete();
|
MissionCleanup.delete();
|
||||||
|
|
||||||
clearServerPaths();
|
clearServerPaths();
|
||||||
|
|
||||||
|
if ($Pref::Server::EnableDatablockCache)
|
||||||
|
resetDatablockCache();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Guid list maintenance functions
|
/// Guid list maintenance functions
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
new ShaderData( BasicRibbonShader )
|
singleton ShaderData( BasicRibbonShader )
|
||||||
{
|
{
|
||||||
DXVertexShaderFile = $Core::CommonShaderPath @ "/ribbons/basicRibbonShaderV.hlsl";
|
DXVertexShaderFile = $Core::CommonShaderPath @ "/ribbons/basicRibbonShaderV.hlsl";
|
||||||
DXPixelShaderFile = $Core::CommonShaderPath @ "/ribbons/basicRibbonShaderP.hlsl";
|
DXPixelShaderFile = $Core::CommonShaderPath @ "/ribbons/basicRibbonShaderP.hlsl";
|
||||||
|
|
@ -26,7 +26,7 @@ singleton CustomMaterial( BasicRibbonMat )
|
||||||
preload = true;
|
preload = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
new ShaderData( TexturedRibbonShader )
|
singleton ShaderData( TexturedRibbonShader )
|
||||||
{
|
{
|
||||||
DXVertexShaderFile = $Core::CommonShaderPath @ "/ribbons/texRibbonShaderV.hlsl";
|
DXVertexShaderFile = $Core::CommonShaderPath @ "/ribbons/texRibbonShaderV.hlsl";
|
||||||
DXPixelShaderFile = $Core::CommonShaderPath @ "/ribbons/texRibbonShaderP.hlsl";
|
DXPixelShaderFile = $Core::CommonShaderPath @ "/ribbons/texRibbonShaderP.hlsl";
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
|
|
||||||
// Vector Light State
|
// Vector Light State
|
||||||
new GFXStateBlockData( AL_VectorLightState )
|
singleton GFXStateBlockData( AL_VectorLightState )
|
||||||
{
|
{
|
||||||
blendDefined = true;
|
blendDefined = true;
|
||||||
blendEnable = true;
|
blendEnable = true;
|
||||||
|
|
@ -48,9 +48,7 @@ new GFXStateBlockData( AL_VectorLightState )
|
||||||
mSamplerNames[1] = "shadowMap";
|
mSamplerNames[1] = "shadowMap";
|
||||||
samplerStates[2] = SamplerClampPoint; // Shadow Map (Do not change this to linear, as all cards can not filter equally.)
|
samplerStates[2] = SamplerClampPoint; // Shadow Map (Do not change this to linear, as all cards can not filter equally.)
|
||||||
mSamplerNames[2] = "dynamicShadowMap";
|
mSamplerNames[2] = "dynamicShadowMap";
|
||||||
samplerStates[3] = SamplerClampLinear; // SSAO Mask
|
samplerStates[3] = SamplerWrapPoint; // Random Direction Map
|
||||||
mSamplerNames[3] = "ssaoMask";
|
|
||||||
samplerStates[4] = SamplerWrapPoint; // Random Direction Map
|
|
||||||
|
|
||||||
cullDefined = true;
|
cullDefined = true;
|
||||||
cullMode = GFXCullNone;
|
cullMode = GFXCullNone;
|
||||||
|
|
@ -61,7 +59,7 @@ new GFXStateBlockData( AL_VectorLightState )
|
||||||
};
|
};
|
||||||
|
|
||||||
// Vector Light Material
|
// Vector Light Material
|
||||||
new ShaderData( AL_VectorLightShader )
|
singleton shaderData( AL_VectorLightShader )
|
||||||
{
|
{
|
||||||
DXVertexShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/farFrustumQuadV.hlsl";
|
DXVertexShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/farFrustumQuadV.hlsl";
|
||||||
DXPixelShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/vectorLightP.hlsl";
|
DXPixelShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/vectorLightP.hlsl";
|
||||||
|
|
@ -72,11 +70,10 @@ new ShaderData( AL_VectorLightShader )
|
||||||
samplerNames[0] = "$deferredBuffer";
|
samplerNames[0] = "$deferredBuffer";
|
||||||
samplerNames[1] = "$shadowMap";
|
samplerNames[1] = "$shadowMap";
|
||||||
samplerNames[2] = "$dynamicShadowMap";
|
samplerNames[2] = "$dynamicShadowMap";
|
||||||
samplerNames[3] = "$ssaoMask";
|
samplerNames[3] = "$gTapRotationTex";
|
||||||
samplerNames[4] = "$gTapRotationTex";
|
samplerNames[4] = "$lightBuffer";
|
||||||
samplerNames[5] = "$lightBuffer";
|
samplerNames[5] = "$colorBuffer";
|
||||||
samplerNames[6] = "$colorBuffer";
|
samplerNames[6] = "$matInfoBuffer";
|
||||||
samplerNames[7] = "$matInfoBuffer";
|
|
||||||
|
|
||||||
pixVersion = 3.0;
|
pixVersion = 3.0;
|
||||||
};
|
};
|
||||||
|
|
@ -89,7 +86,6 @@ new CustomMaterial( AL_VectorLightMaterial )
|
||||||
sampler["deferredBuffer"] = "#deferred";
|
sampler["deferredBuffer"] = "#deferred";
|
||||||
sampler["shadowMap"] = "$dynamiclight";
|
sampler["shadowMap"] = "$dynamiclight";
|
||||||
sampler["dynamicShadowMap"] = "$dynamicShadowMap";
|
sampler["dynamicShadowMap"] = "$dynamicShadowMap";
|
||||||
sampler["ssaoMask"] = "#ssaoMask";
|
|
||||||
sampler["lightBuffer"] = "#specularLighting";
|
sampler["lightBuffer"] = "#specularLighting";
|
||||||
sampler["colorBuffer"] = "#color";
|
sampler["colorBuffer"] = "#color";
|
||||||
sampler["matInfoBuffer"] = "#matinfo";
|
sampler["matInfoBuffer"] = "#matinfo";
|
||||||
|
|
@ -102,7 +98,7 @@ new CustomMaterial( AL_VectorLightMaterial )
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
// Convex-geometry light states
|
// Convex-geometry light states
|
||||||
new GFXStateBlockData( AL_ConvexLightState )
|
singleton GFXStateBlockData( AL_ConvexLightState )
|
||||||
{
|
{
|
||||||
blendDefined = true;
|
blendDefined = true;
|
||||||
blendEnable = true;
|
blendEnable = true;
|
||||||
|
|
@ -140,7 +136,7 @@ new GFXStateBlockData( AL_ConvexLightState )
|
||||||
};
|
};
|
||||||
|
|
||||||
// Point Light Material
|
// Point Light Material
|
||||||
new ShaderData( AL_PointLightShader )
|
singleton shaderData( AL_PointLightShader )
|
||||||
{
|
{
|
||||||
DXVertexShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/convexGeometryV.hlsl";
|
DXVertexShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/convexGeometryV.hlsl";
|
||||||
DXPixelShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/pointLightP.hlsl";
|
DXPixelShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/pointLightP.hlsl";
|
||||||
|
|
@ -179,7 +175,7 @@ new CustomMaterial( AL_PointLightMaterial )
|
||||||
};
|
};
|
||||||
|
|
||||||
// Spot Light Material
|
// Spot Light Material
|
||||||
new ShaderData( AL_SpotLightShader )
|
singleton shaderData( AL_SpotLightShader )
|
||||||
{
|
{
|
||||||
DXVertexShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/convexGeometryV.hlsl";
|
DXVertexShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/convexGeometryV.hlsl";
|
||||||
DXPixelShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/spotLightP.hlsl";
|
DXPixelShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/spotLightP.hlsl";
|
||||||
|
|
@ -256,7 +252,7 @@ new Material( AL_DefaultShadowMaterial )
|
||||||
};
|
};
|
||||||
|
|
||||||
// Particle System Point Light Material
|
// Particle System Point Light Material
|
||||||
new ShaderData( AL_ParticlePointLightShader )
|
singleton shaderData( AL_ParticlePointLightShader )
|
||||||
{
|
{
|
||||||
DXVertexShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/particlePointLightV.hlsl";
|
DXVertexShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/particlePointLightV.hlsl";
|
||||||
DXPixelShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/particlePointLightP.hlsl";
|
DXPixelShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/particlePointLightP.hlsl";
|
||||||
|
|
@ -281,7 +277,7 @@ new CustomMaterial( AL_ParticlePointLightMaterial )
|
||||||
};
|
};
|
||||||
|
|
||||||
//Probe Processing
|
//Probe Processing
|
||||||
new ShaderData( IrradianceShader )
|
singleton shaderData( IrradianceShader )
|
||||||
{
|
{
|
||||||
DXVertexShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/cubemapV.hlsl";
|
DXVertexShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/cubemapV.hlsl";
|
||||||
DXPixelShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/irradianceP.hlsl";
|
DXPixelShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/irradianceP.hlsl";
|
||||||
|
|
@ -294,7 +290,7 @@ new ShaderData( IrradianceShader )
|
||||||
pixVersion = 3.0;
|
pixVersion = 3.0;
|
||||||
};
|
};
|
||||||
|
|
||||||
new ShaderData( PrefiterCubemapShader )
|
singleton shaderData( PrefiterCubemapShader )
|
||||||
{
|
{
|
||||||
DXVertexShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/cubemapV.hlsl";
|
DXVertexShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/cubemapV.hlsl";
|
||||||
DXPixelShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/prefilterP.hlsl";
|
DXPixelShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/prefilterP.hlsl";
|
||||||
|
|
@ -322,6 +318,7 @@ singleton ShaderData( PFX_ReflectionProbeArray )
|
||||||
samplerNames[3] = "$BRDFTexture";
|
samplerNames[3] = "$BRDFTexture";
|
||||||
samplerNames[4] = "$specularCubemapAR";
|
samplerNames[4] = "$specularCubemapAR";
|
||||||
samplerNames[5] = "$irradianceCubemapAR";
|
samplerNames[5] = "$irradianceCubemapAR";
|
||||||
|
samplerNames[6] = "$ssaoMask";
|
||||||
|
|
||||||
pixVersion = 2.0;
|
pixVersion = 2.0;
|
||||||
};
|
};
|
||||||
|
|
@ -350,4 +347,5 @@ singleton GFXStateBlockData( PFX_ReflectionProbeArrayStateBlock )
|
||||||
samplerStates[3] = SamplerClampPoint;
|
samplerStates[3] = SamplerClampPoint;
|
||||||
samplerStates[4] = SamplerClampLinear;
|
samplerStates[4] = SamplerClampLinear;
|
||||||
samplerStates[5] = SamplerClampLinear;
|
samplerStates[5] = SamplerClampLinear;
|
||||||
|
samplerStates[6] = SamplerClampPoint;
|
||||||
};
|
};
|
||||||
|
|
@ -9,7 +9,7 @@ singleton ShaderData( DeferredColorShader )
|
||||||
pixVersion = 2.0;
|
pixVersion = 2.0;
|
||||||
};
|
};
|
||||||
|
|
||||||
new GFXStateBlockData( AL_DeferredCaptureState : PFX_DefaultStateBlock )
|
singleton GFXStateBlockData( AL_DeferredCaptureState : PFX_DefaultStateBlock )
|
||||||
{
|
{
|
||||||
blendEnable = false;
|
blendEnable = false;
|
||||||
|
|
||||||
|
|
@ -27,7 +27,7 @@ new GFXStateBlockData( AL_DeferredCaptureState : PFX_DefaultStateBlock )
|
||||||
samplerStates[4] = SamplerWrapLinear;
|
samplerStates[4] = SamplerWrapLinear;
|
||||||
};
|
};
|
||||||
|
|
||||||
new ShaderData( AL_ProbeShader )
|
singleton shaderData( AL_ProbeShader )
|
||||||
{
|
{
|
||||||
DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
|
DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
|
||||||
DXPixelShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/probeShadingP.hlsl";
|
DXPixelShaderFile = $Core::CommonShaderPath @ "/lighting/advanced/probeShadingP.hlsl";
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
new ShaderData(BlurDepthShader)
|
singleton shaderData(BlurDepthShader)
|
||||||
{
|
{
|
||||||
DXVertexShaderFile = $Core::CommonShaderPath @ "/lighting/shadowMap/boxFilterV.hlsl";
|
DXVertexShaderFile = $Core::CommonShaderPath @ "/lighting/shadowMap/boxFilterV.hlsl";
|
||||||
DXPixelShaderFile = $Core::CommonShaderPath @ "/lighting/shadowMap/boxFilterP.hlsl";
|
DXPixelShaderFile = $Core::CommonShaderPath @ "/lighting/shadowMap/boxFilterP.hlsl";
|
||||||
|
|
|
||||||
|
|
@ -146,7 +146,7 @@ singleton PostEffect( VolFogGlowPostFx )
|
||||||
texture[0] = "$backbuffer";
|
texture[0] = "$backbuffer";
|
||||||
target = "$outTex";
|
target = "$outTex";
|
||||||
targetScale = "0.5 0.5";
|
targetScale = "0.5 0.5";
|
||||||
isEnabled = true;
|
isEnabled = false;
|
||||||
// Blur vertically
|
// Blur vertically
|
||||||
new PostEffect()
|
new PostEffect()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -328,7 +328,7 @@ function HDRPostFX::onAdd( %this )
|
||||||
PostFXManager.registerPostEffect(%this);
|
PostFXManager.registerPostEffect(%this);
|
||||||
|
|
||||||
//HDR should really be on at all times
|
//HDR should really be on at all times
|
||||||
%this.enable();
|
//%this.enable();
|
||||||
|
|
||||||
$HDRPostFX::enableToneMapping = 1;
|
$HDRPostFX::enableToneMapping = 1;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -35,8 +35,6 @@ singleton ShaderData( PFX_PassthruShader )
|
||||||
|
|
||||||
function postFXInit()
|
function postFXInit()
|
||||||
{
|
{
|
||||||
exec("core/postFX/guis/postFxManager.gui");
|
|
||||||
|
|
||||||
//Load the core postFX files themselves
|
//Load the core postFX files themselves
|
||||||
if (!$Server::Dedicated)
|
if (!$Server::Dedicated)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ $sequence = 16;
|
||||||
|
|
||||||
|
|
||||||
// Common stateblock definitions
|
// Common stateblock definitions
|
||||||
new GFXSamplerStateData(SamplerClampLinear)
|
singleton GFXSamplerStateData(SamplerClampLinear)
|
||||||
{
|
{
|
||||||
textureColorOp = GFXTOPModulate;
|
textureColorOp = GFXTOPModulate;
|
||||||
addressModeU = GFXAddressClamp;
|
addressModeU = GFXAddressClamp;
|
||||||
|
|
@ -45,7 +45,7 @@ new GFXSamplerStateData(SamplerClampLinear)
|
||||||
mipFilter = GFXTextureFilterLinear;
|
mipFilter = GFXTextureFilterLinear;
|
||||||
};
|
};
|
||||||
|
|
||||||
new GFXSamplerStateData(SamplerClampPoint)
|
singleton GFXSamplerStateData(SamplerClampPoint)
|
||||||
{
|
{
|
||||||
textureColorOp = GFXTOPModulate;
|
textureColorOp = GFXTOPModulate;
|
||||||
addressModeU = GFXAddressClamp;
|
addressModeU = GFXAddressClamp;
|
||||||
|
|
@ -56,7 +56,7 @@ new GFXSamplerStateData(SamplerClampPoint)
|
||||||
mipFilter = GFXTextureFilterPoint;
|
mipFilter = GFXTextureFilterPoint;
|
||||||
};
|
};
|
||||||
|
|
||||||
new GFXSamplerStateData(SamplerWrapLinear)
|
singleton GFXSamplerStateData(SamplerWrapLinear)
|
||||||
{
|
{
|
||||||
textureColorOp = GFXTOPModulate;
|
textureColorOp = GFXTOPModulate;
|
||||||
addressModeU = GFXTextureAddressWrap;
|
addressModeU = GFXTextureAddressWrap;
|
||||||
|
|
@ -67,7 +67,7 @@ new GFXSamplerStateData(SamplerWrapLinear)
|
||||||
mipFilter = GFXTextureFilterLinear;
|
mipFilter = GFXTextureFilterLinear;
|
||||||
};
|
};
|
||||||
|
|
||||||
new GFXSamplerStateData(SamplerWrapPoint)
|
singleton GFXSamplerStateData(SamplerWrapPoint)
|
||||||
{
|
{
|
||||||
textureColorOp = GFXTOPModulate;
|
textureColorOp = GFXTOPModulate;
|
||||||
addressModeU = GFXTextureAddressWrap;
|
addressModeU = GFXTextureAddressWrap;
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
// IN THE SOFTWARE.
|
// IN THE SOFTWARE.
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
new GFXStateBlockData( ScatterSkySBData )
|
singleton GFXStateBlockData( ScatterSkySBData )
|
||||||
{
|
{
|
||||||
cullMode = "GFXCullNone";
|
cullMode = "GFXCullNone";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@ singleton ShaderData( OffscreenParticleCompositeShaderData )
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Planar Reflection
|
// Planar Reflection
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
new ShaderData( ReflectBump )
|
singleton shaderData( ReflectBump )
|
||||||
{
|
{
|
||||||
DXVertexShaderFile = $Core::CommonShaderPath @ "/planarReflectBumpV.hlsl";
|
DXVertexShaderFile = $Core::CommonShaderPath @ "/planarReflectBumpV.hlsl";
|
||||||
DXPixelShaderFile = $Core::CommonShaderPath @ "/planarReflectBumpP.hlsl";
|
DXPixelShaderFile = $Core::CommonShaderPath @ "/planarReflectBumpP.hlsl";
|
||||||
|
|
@ -72,7 +72,7 @@ new ShaderData( ReflectBump )
|
||||||
pixVersion = 2.0;
|
pixVersion = 2.0;
|
||||||
};
|
};
|
||||||
|
|
||||||
new ShaderData( Reflect )
|
singleton shaderData( Reflect )
|
||||||
{
|
{
|
||||||
DXVertexShaderFile = $Core::CommonShaderPath @ "/planarReflectV.hlsl";
|
DXVertexShaderFile = $Core::CommonShaderPath @ "/planarReflectV.hlsl";
|
||||||
DXPixelShaderFile = $Core::CommonShaderPath @ "/planarReflectP.hlsl";
|
DXPixelShaderFile = $Core::CommonShaderPath @ "/planarReflectP.hlsl";
|
||||||
|
|
@ -89,7 +89,7 @@ new ShaderData( Reflect )
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// fxFoliageReplicator
|
// fxFoliageReplicator
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
new ShaderData( fxFoliageReplicatorShader )
|
singleton shaderData( fxFoliageReplicatorShader )
|
||||||
{
|
{
|
||||||
DXVertexShaderFile = $Core::CommonShaderPath @ "/fxFoliageReplicatorV.hlsl";
|
DXVertexShaderFile = $Core::CommonShaderPath @ "/fxFoliageReplicatorV.hlsl";
|
||||||
DXPixelShaderFile = $Core::CommonShaderPath @ "/fxFoliageReplicatorP.hlsl";
|
DXPixelShaderFile = $Core::CommonShaderPath @ "/fxFoliageReplicatorP.hlsl";
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ singleton ShaderData( WaterShader )
|
||||||
pixVersion = 3.0;
|
pixVersion = 3.0;
|
||||||
};
|
};
|
||||||
|
|
||||||
new GFXSamplerStateData(WaterSampler)
|
singleton GFXSamplerStateData(WaterSampler)
|
||||||
{
|
{
|
||||||
textureColorOp = GFXTOPModulate;
|
textureColorOp = GFXTOPModulate;
|
||||||
addressModeU = GFXAddressWrap;
|
addressModeU = GFXAddressWrap;
|
||||||
|
|
|
||||||
|
|
@ -81,6 +81,7 @@ struct Surface
|
||||||
|
|
||||||
float NdotV; // cos(angle between normal and view vector)
|
float NdotV; // cos(angle between normal and view vector)
|
||||||
vec3 f0; // fresnel value (rgb)
|
vec3 f0; // fresnel value (rgb)
|
||||||
|
float f90;
|
||||||
vec3 albedo; // diffuse light absorbtion value (rgb)
|
vec3 albedo; // diffuse light absorbtion value (rgb)
|
||||||
vec3 R; // reflection vector
|
vec3 R; // reflection vector
|
||||||
vec3 F; // fresnel term computed from f0, N and V
|
vec3 F; // fresnel term computed from f0, N and V
|
||||||
|
|
@ -93,8 +94,8 @@ void updateSurface(inout Surface surface)
|
||||||
surface.albedo = surface.baseColor.rgb * (1.0 - surface.metalness);
|
surface.albedo = surface.baseColor.rgb * (1.0 - surface.metalness);
|
||||||
surface.f0 = lerp(vec3(0.04f), surface.baseColor.rgb, surface.metalness);
|
surface.f0 = lerp(vec3(0.04f), surface.baseColor.rgb, surface.metalness);
|
||||||
surface.R = -reflect(surface.V, surface.N);
|
surface.R = -reflect(surface.V, surface.N);
|
||||||
float f90 = saturate(50.0 * dot(surface.f0, vec3(0.33,0.33,0.33)));
|
surface.f90 = saturate(50.0 * dot(surface.f0, vec3(0.33,0.33,0.33)));
|
||||||
surface.F = F_Schlick(surface.f0, f90, surface.NdotV);
|
surface.F = F_Schlick(surface.f0, surface.f90, surface.NdotV);
|
||||||
}
|
}
|
||||||
|
|
||||||
Surface createSurface(vec4 normDepth, sampler2D colorBuffer, sampler2D matInfoBuffer, in vec2 uv, in vec3 wsEyePos, in vec3 wsEyeRay, in mat4 invView)
|
Surface createSurface(vec4 normDepth, sampler2D colorBuffer, sampler2D matInfoBuffer, in vec2 uv, in vec3 wsEyePos, in vec3 wsEyeRay, in mat4 invView)
|
||||||
|
|
@ -229,6 +230,11 @@ vec3 getPunctualLight(in Surface surface, in SurfaceToLight surfaceToLight, vec3
|
||||||
return final;
|
return final;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float computeSpecOcclusion( float NdotV , float AO , float roughness )
|
||||||
|
{
|
||||||
|
return saturate (pow( abs(NdotV + AO) , exp2 ( -16.0f * roughness - 1.0f )) - 1.0f + AO );
|
||||||
|
}
|
||||||
|
|
||||||
vec4 compute4Lights( Surface surface,
|
vec4 compute4Lights( Surface surface,
|
||||||
vec4 shadowMask,
|
vec4 shadowMask,
|
||||||
vec4 inLightPos[4],
|
vec4 inLightPos[4],
|
||||||
|
|
@ -421,20 +427,18 @@ vec4 computeForwardProbes(Surface surface,
|
||||||
specular = mix(specular,textureLod(specularCubemapAR, vec4(surface.R, skylightCubemapIdx), lod).xyz, alpha);
|
specular = mix(specular,textureLod(specularCubemapAR, vec4(surface.R, skylightCubemapIdx), lod).xyz, alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
vec3 F = FresnelSchlickRoughness(surface.NdotV, surface.f0, surface.roughness);
|
|
||||||
|
|
||||||
//energy conservation
|
//energy conservation
|
||||||
vec3 kD = vec3(1.0,1.0,1.0) - F;
|
vec3 kD = 1.0f - surface.F;
|
||||||
kD *= 1.0 - surface.metalness;
|
kD *= 1.0f - surface.metalness;
|
||||||
|
|
||||||
//apply brdf
|
float dfgNdotV = max( surface.NdotV , 0.0009765625f ); //0.5f/512.0f (512 is size of dfg/brdf lookup tex)
|
||||||
//Do it once to save on texture samples
|
vec2 envBRDF = textureLod(BRDFTexture, vec2(dfgNdotV, surface.roughness),0).rg;
|
||||||
vec2 brdf = textureLod(BRDFTexture, vec2(surface.roughness, 1.0-surface.NdotV),0).xy;
|
specular *= surface.F * envBRDF.x + surface.f90 * envBRDF.y;
|
||||||
specular *= brdf.x * F + brdf.y;
|
irradiance *= kD * surface.baseColor.rgb;
|
||||||
|
|
||||||
//final diffuse color
|
//AO
|
||||||
vec3 diffuse = kD * irradiance * surface.baseColor.rgb;
|
irradiance *= surface.ao;
|
||||||
vec4 finalColor = vec4(diffuse + specular * surface.ao, 1.0);
|
specular *= computeSpecOcclusion(surface.NdotV, surface.ao, surface.roughness);
|
||||||
|
|
||||||
return finalColor;
|
return vec4(irradiance + specular, 0);//alpha writes disabled
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -85,6 +85,7 @@ struct Surface
|
||||||
float3 albedo; // diffuse light absorbtion value (rgb)
|
float3 albedo; // diffuse light absorbtion value (rgb)
|
||||||
float3 R; // reflection vector
|
float3 R; // reflection vector
|
||||||
float3 F; // fresnel term computed from f0, N and V
|
float3 F; // fresnel term computed from f0, N and V
|
||||||
|
float f90;
|
||||||
|
|
||||||
inline void Update()
|
inline void Update()
|
||||||
{
|
{
|
||||||
|
|
@ -94,7 +95,7 @@ struct Surface
|
||||||
f0 = lerp(0.04.xxx, baseColor.rgb, metalness);
|
f0 = lerp(0.04.xxx, baseColor.rgb, metalness);
|
||||||
|
|
||||||
R = -reflect(V, N);
|
R = -reflect(V, N);
|
||||||
float f90 = saturate(50.0 * dot(f0, 0.33));
|
f90 = saturate(50.0 * dot(f0, 0.33));
|
||||||
F = F_Schlick(f0, f90, NdotV);
|
F = F_Schlick(f0, f90, NdotV);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -235,6 +236,11 @@ inline float3 getPunctualLight(in Surface surface, in SurfaceToLight surfaceToLi
|
||||||
return final;
|
return final;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float computeSpecOcclusion( float NdotV , float AO , float roughness )
|
||||||
|
{
|
||||||
|
return saturate (pow( abs(NdotV + AO) , exp2 ( -16.0f * roughness - 1.0f )) - 1.0f + AO );
|
||||||
|
}
|
||||||
|
|
||||||
float4 compute4Lights( Surface surface,
|
float4 compute4Lights( Surface surface,
|
||||||
float4 shadowMask,
|
float4 shadowMask,
|
||||||
float4 inLightPos[4],
|
float4 inLightPos[4],
|
||||||
|
|
@ -462,19 +468,18 @@ float4 computeForwardProbes(Surface surface,
|
||||||
specular = lerp(specular,TORQUE_TEXCUBEARRAYLOD(specularCubemapAR, surface.R, skylightCubemapIdx, lod).xyz,alpha);
|
specular = lerp(specular,TORQUE_TEXCUBEARRAYLOD(specularCubemapAR, surface.R, skylightCubemapIdx, lod).xyz,alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
float3 F = FresnelSchlickRoughness(surface.NdotV, surface.f0, surface.roughness);
|
|
||||||
|
|
||||||
//energy conservation
|
//energy conservation
|
||||||
float3 kD = 1.0.xxx - F;
|
float3 kD = 1.0f - surface.F;
|
||||||
kD *= 1.0 - surface.metalness;
|
kD *= 1.0f - surface.metalness;
|
||||||
|
|
||||||
//apply brdf
|
float dfgNdotV = max( surface.NdotV , 0.0009765625f ); //0.5f/512.0f (512 is size of dfg/brdf lookup tex)
|
||||||
//Do it once to save on texture samples
|
float2 envBRDF = TORQUE_TEX2DLOD(BRDFTexture, float4(dfgNdotV, surface.roughness,0,0)).rg;
|
||||||
float2 brdf = TORQUE_TEX2DLOD(BRDFTexture,float4(surface.roughness, 1.0-surface.NdotV, 0.0, 0.0)).xy;
|
specular *= surface.F * envBRDF.x + surface.f90 * envBRDF.y;
|
||||||
specular *= brdf.x * F + brdf.y;
|
irradiance *= kD * surface.baseColor.rgb;
|
||||||
|
|
||||||
//final diffuse color
|
//AO
|
||||||
float3 diffuse = kD * irradiance * surface.baseColor.rgb;
|
irradiance *= surface.ao;
|
||||||
float4 finalColor = float4(diffuse* surface.ao + specular * surface.ao, 1.0);
|
specular *= computeSpecOcclusion(surface.NdotV, surface.ao, surface.roughness);
|
||||||
return finalColor;
|
|
||||||
|
return float4(irradiance + specular, 0);//alpha writes disabled
|
||||||
}
|
}
|
||||||
|
|
@ -24,6 +24,11 @@ uniform int numProbes;
|
||||||
uniform samplerCubeArray specularCubemapAR;
|
uniform samplerCubeArray specularCubemapAR;
|
||||||
uniform samplerCubeArray irradianceCubemapAR;
|
uniform samplerCubeArray irradianceCubemapAR;
|
||||||
|
|
||||||
|
#ifdef USE_SSAO_MASK
|
||||||
|
uniform sampler2D ssaoMask;
|
||||||
|
uniform vec4 rtParams6;
|
||||||
|
#endif
|
||||||
|
|
||||||
uniform vec4 inProbePosArray[MAX_PROBES];
|
uniform vec4 inProbePosArray[MAX_PROBES];
|
||||||
uniform vec4 inRefPosArray[MAX_PROBES];
|
uniform vec4 inRefPosArray[MAX_PROBES];
|
||||||
uniform mat4 worldToObjArray[MAX_PROBES];
|
uniform mat4 worldToObjArray[MAX_PROBES];
|
||||||
|
|
@ -52,6 +57,12 @@ void main()
|
||||||
{
|
{
|
||||||
discard;
|
discard;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef USE_SSAO_MASK
|
||||||
|
float ssao = 1.0 - texture( ssaoMask, viewportCoordToRenderTarget( uv0.xy, rtParams6 ) ).r;
|
||||||
|
surface.ao = min(surface.ao, ssao);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
float alpha = 1;
|
float alpha = 1;
|
||||||
|
|
||||||
|
|
@ -190,20 +201,19 @@ void main()
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
vec3 F = FresnelSchlickRoughness(surface.NdotV, surface.f0, surface.roughness);
|
|
||||||
|
|
||||||
//energy conservation
|
//energy conservation
|
||||||
vec3 kD = vec3(1,1,1) - F;
|
vec3 kD = 1.0f - surface.F;
|
||||||
kD *= 1.0 - surface.metalness;
|
kD *= 1.0f - surface.metalness;
|
||||||
|
|
||||||
//apply brdf
|
float dfgNdotV = max( surface.NdotV , 0.0009765625f ); //0.5f/512.0f (512 is size of dfg/brdf lookup tex)
|
||||||
//Do it once to save on texture samples
|
vec2 envBRDF = textureLod(BRDFTexture, vec2(dfgNdotV, surface.roughness),0).rg;
|
||||||
vec2 brdf = textureLod(BRDFTexture, vec2(surface.roughness, surface.NdotV),0).xy;
|
specular *= surface.F * envBRDF.x + surface.f90 * envBRDF.y;
|
||||||
specular *= brdf.x * F + brdf.y;
|
irradiance *= kD * surface.baseColor.rgb;
|
||||||
|
|
||||||
//final diffuse color
|
//AO
|
||||||
vec3 diffuse = kD * irradiance * surface.baseColor.rgb;
|
irradiance *= surface.ao;
|
||||||
vec4 finalColor = vec4(diffuse + specular * surface.ao, 1.0);
|
specular *= computeSpecOcclusion(surface.NdotV, surface.ao, surface.roughness);
|
||||||
|
|
||||||
OUT_col = finalColor;
|
OUT_col = vec4(irradiance + specular, 0);//alpha writes disabled
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,11 +37,6 @@ uniform sampler2D deferredBuffer;
|
||||||
uniform sampler2D shadowMap;
|
uniform sampler2D shadowMap;
|
||||||
uniform sampler2D dynamicShadowMap;
|
uniform sampler2D dynamicShadowMap;
|
||||||
|
|
||||||
#ifdef USE_SSAO_MASK
|
|
||||||
uniform sampler2D ssaoMask ;
|
|
||||||
uniform vec4 rtParams3;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
uniform sampler2D colorBuffer;
|
uniform sampler2D colorBuffer;
|
||||||
uniform sampler2D matInfoBuffer;
|
uniform sampler2D matInfoBuffer;
|
||||||
uniform float lightBrightness;
|
uniform float lightBrightness;
|
||||||
|
|
@ -245,10 +240,6 @@ void main()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif //NO_SHADOW
|
#endif //NO_SHADOW
|
||||||
// Sample the AO texture.
|
|
||||||
#ifdef USE_SSAO_MASK
|
|
||||||
surface.ao *= 1.0 - texture( ssaoMask, viewportCoordToRenderTarget( uv0.xy, rtParams3 ) ).r;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//get directional light contribution
|
//get directional light contribution
|
||||||
vec3 lighting = getDirectionalLight(surface, surfaceToLight, lightingColor.rgb, lightBrightness, shadow);
|
vec3 lighting = getDirectionalLight(surface, surfaceToLight, lightingColor.rgb, lightBrightness, shadow);
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,11 @@ uniform int numProbes;
|
||||||
TORQUE_UNIFORM_SAMPLERCUBEARRAY(specularCubemapAR, 4);
|
TORQUE_UNIFORM_SAMPLERCUBEARRAY(specularCubemapAR, 4);
|
||||||
TORQUE_UNIFORM_SAMPLERCUBEARRAY(irradianceCubemapAR, 5);
|
TORQUE_UNIFORM_SAMPLERCUBEARRAY(irradianceCubemapAR, 5);
|
||||||
|
|
||||||
|
#ifdef USE_SSAO_MASK
|
||||||
|
TORQUE_UNIFORM_SAMPLER2D(ssaoMask, 6);
|
||||||
|
uniform float4 rtParams6;
|
||||||
|
#endif
|
||||||
|
|
||||||
uniform float4 inProbePosArray[MAX_PROBES];
|
uniform float4 inProbePosArray[MAX_PROBES];
|
||||||
uniform float4 inRefPosArray[MAX_PROBES];
|
uniform float4 inRefPosArray[MAX_PROBES];
|
||||||
uniform float4x4 worldToObjArray[MAX_PROBES];
|
uniform float4x4 worldToObjArray[MAX_PROBES];
|
||||||
|
|
@ -49,6 +54,11 @@ float4 main(PFXVertToPix IN) : SV_TARGET
|
||||||
return TORQUE_TEX2D(colorBuffer, IN.uv0.xy);
|
return TORQUE_TEX2D(colorBuffer, IN.uv0.xy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef USE_SSAO_MASK
|
||||||
|
float ssao = 1.0 - TORQUE_TEX2D( ssaoMask, viewportCoordToRenderTarget( IN.uv0.xy, rtParams6 ) ).r;
|
||||||
|
surface.ao = min(surface.ao, ssao);
|
||||||
|
#endif
|
||||||
|
|
||||||
float alpha = 1;
|
float alpha = 1;
|
||||||
|
|
||||||
#if SKYLIGHT_ONLY == 0
|
#if SKYLIGHT_ONLY == 0
|
||||||
|
|
@ -182,19 +192,18 @@ float4 main(PFXVertToPix IN) : SV_TARGET
|
||||||
return float4(irradiance, 1);
|
return float4(irradiance, 1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
float3 F = FresnelSchlickRoughness(surface.NdotV, surface.f0, surface.roughness);
|
|
||||||
|
|
||||||
//energy conservation
|
//energy conservation
|
||||||
float3 kD = 1.0.xxx - F;
|
float3 kD = 1.0f - surface.F;
|
||||||
kD *= 1.0 - surface.metalness;
|
kD *= 1.0f - surface.metalness;
|
||||||
|
|
||||||
//apply brdf
|
float dfgNdotV = max( surface.NdotV , 0.0009765625f ); //0.5f/512.0f (512 is size of dfg/brdf lookup tex)
|
||||||
//Do it once to save on texture samples
|
float2 envBRDF = TORQUE_TEX2DLOD(BRDFTexture, float4(dfgNdotV, surface.roughness,0,0)).rg;
|
||||||
float2 brdf = TORQUE_TEX2DLOD(BRDFTexture, float4(surface.roughness, 1.0-surface.NdotV, 0.0, 0.0)).xy;
|
specular *= surface.F * envBRDF.x + surface.f90 * envBRDF.y;
|
||||||
specular *= brdf.x * F + brdf.y;
|
irradiance *= kD * surface.baseColor.rgb;
|
||||||
|
|
||||||
//final diffuse color
|
//AO
|
||||||
float3 diffuse = kD * irradiance * surface.baseColor.rgb;
|
irradiance *= surface.ao;
|
||||||
float4 finalColor = float4(diffuse* surface.ao + specular * surface.ao, 1.0);
|
specular *= computeSpecOcclusion(surface.NdotV, surface.ao, surface.roughness);
|
||||||
return finalColor;
|
|
||||||
|
return float4(irradiance + specular, 0);//alpha writes disabled
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ static float2 sNonUniformTaps[NUM_PRE_TAPS] =
|
||||||
|
|
||||||
/// The texture used to do per-pixel pseudorandom
|
/// The texture used to do per-pixel pseudorandom
|
||||||
/// rotations of the filter taps.
|
/// rotations of the filter taps.
|
||||||
TORQUE_UNIFORM_SAMPLER2D(gTapRotationTex, 4);
|
TORQUE_UNIFORM_SAMPLER2D(gTapRotationTex, 3);
|
||||||
|
|
||||||
float softShadow_sampleTaps( TORQUE_SAMPLER2D(shadowMap1),
|
float softShadow_sampleTaps( TORQUE_SAMPLER2D(shadowMap1),
|
||||||
float2 sinCos,
|
float2 sinCos,
|
||||||
|
|
|
||||||
|
|
@ -33,13 +33,8 @@ TORQUE_UNIFORM_SAMPLER2D(deferredBuffer, 0);
|
||||||
TORQUE_UNIFORM_SAMPLER2D(shadowMap, 1);
|
TORQUE_UNIFORM_SAMPLER2D(shadowMap, 1);
|
||||||
TORQUE_UNIFORM_SAMPLER2D(dynamicShadowMap, 2);
|
TORQUE_UNIFORM_SAMPLER2D(dynamicShadowMap, 2);
|
||||||
|
|
||||||
#ifdef USE_SSAO_MASK
|
TORQUE_UNIFORM_SAMPLER2D(colorBuffer, 5);
|
||||||
TORQUE_UNIFORM_SAMPLER2D(ssaoMask, 3);
|
TORQUE_UNIFORM_SAMPLER2D(matInfoBuffer, 6);
|
||||||
uniform float4 rtParams3;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
TORQUE_UNIFORM_SAMPLER2D(colorBuffer, 6);
|
|
||||||
TORQUE_UNIFORM_SAMPLER2D(matInfoBuffer, 7);
|
|
||||||
|
|
||||||
uniform float lightBrightness;
|
uniform float lightBrightness;
|
||||||
uniform float3 lightDirection;
|
uniform float3 lightDirection;
|
||||||
|
|
@ -234,10 +229,6 @@ float4 main(FarFrustumQuadConnectP IN) : SV_TARGET
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif //NO_SHADOW
|
#endif //NO_SHADOW
|
||||||
// Sample the AO texture.
|
|
||||||
#ifdef USE_SSAO_MASK
|
|
||||||
surface.ao *= 1.0 - TORQUE_TEX2D( ssaoMask, viewportCoordToRenderTarget( IN.uv0.xy, rtParams3 ) ).r;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//get directional light contribution
|
//get directional light contribution
|
||||||
float3 lighting = getDirectionalLight(surface, surfaceToLight, lightingColor.rgb, lightBrightness, shadow);
|
float3 lighting = getDirectionalLight(surface, surfaceToLight, lightingColor.rgb, lightBrightness, shadow);
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,12 @@
|
||||||
|
$traceModuleCalls=false;
|
||||||
|
$reportModuleFileConflicts=true;
|
||||||
|
if (!isObject(ExecFilesList))
|
||||||
|
new ArrayObject(ExecFilesList);
|
||||||
|
|
||||||
function callOnModules(%functionName, %moduleGroup)
|
function callOnModules(%functionName, %moduleGroup)
|
||||||
{
|
{
|
||||||
|
//clear per module group file execution chain
|
||||||
|
ExecFilesList.empty();
|
||||||
//Get our modules so we can exec any specific client-side loading/handling
|
//Get our modules so we can exec any specific client-side loading/handling
|
||||||
%modulesList = ModuleDatabase.findModules(false);
|
%modulesList = ModuleDatabase.findModules(false);
|
||||||
for(%i=0; %i < getWordCount(%modulesList); %i++)
|
for(%i=0; %i < getWordCount(%modulesList); %i++)
|
||||||
|
|
@ -16,7 +23,14 @@ function callOnModules(%functionName, %moduleGroup)
|
||||||
{
|
{
|
||||||
eval(%module.scopeSet @ "." @ %functionName @ "();");
|
eval(%module.scopeSet @ "." @ %functionName @ "();");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
%execFilecount = ExecFilesList.count();
|
||||||
|
for (%i=0;%i<%execFilecount;%i++)
|
||||||
|
{
|
||||||
|
%filename = ExecFilesList.getKey(%i);
|
||||||
|
exec(%filename);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadModuleMaterials(%moduleGroup)
|
function loadModuleMaterials(%moduleGroup)
|
||||||
|
|
@ -69,10 +83,12 @@ function SimSet::getModulePath(%scopeSet)
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
function SimSet::registerDatablock(%scopeSet, %datablockFilePath)
|
function SimSet::registerDatablock(%scopeSet, %datablockFilePath, %isExclusive)
|
||||||
{
|
{
|
||||||
|
if ($traceModuleCalls)
|
||||||
|
warn("SimSet::registerDatablock");
|
||||||
%name = %scopeSet.getName();
|
%name = %scopeSet.getName();
|
||||||
%moduleDef = ModuleDatabase.findModule(%name);
|
%moduleDef = ModuleDatabase.findModule(%name, 1);
|
||||||
|
|
||||||
if(!isObject(%moduleDef))
|
if(!isObject(%moduleDef))
|
||||||
{
|
{
|
||||||
|
|
@ -89,6 +105,176 @@ function SimSet::registerDatablock(%scopeSet, %datablockFilePath)
|
||||||
%relativePath = makeRelativePath(%datablockFilePath);
|
%relativePath = makeRelativePath(%datablockFilePath);
|
||||||
|
|
||||||
%fullPath = pathConcat(%moduleDef.ModulePath, %relativePath);
|
%fullPath = pathConcat(%moduleDef.ModulePath, %relativePath);
|
||||||
|
///go through all entries
|
||||||
|
%locked = false;
|
||||||
|
%dbFilecount = DatablockFilesList.count();
|
||||||
|
for (%i=0;%i<%dbFilecount;%i++)
|
||||||
|
{
|
||||||
|
%check = DatablockFilesList.getKey(%i);
|
||||||
|
//look for a substring match
|
||||||
|
%isMatch = strIsMatchExpr("*"@ %datablockFilePath,%check );
|
||||||
|
if (%isMatch)
|
||||||
|
{
|
||||||
|
//check if we're already locked in
|
||||||
|
//and kill off any duplicates
|
||||||
|
//do note that doing it in this order means setting exclusive twice
|
||||||
|
//allows one to override exclusive with exclusive
|
||||||
|
%locked = DatablockFilesList.getValue(%i);
|
||||||
|
|
||||||
|
if ((!%locked && !%isExclusive)&&($reportModuleFileConflicts))
|
||||||
|
error("found" SPC %datablockFilePath SPC "duplicate file!");
|
||||||
|
if (!%locked || (%locked && %isExclusive))
|
||||||
|
{
|
||||||
|
DatablockFilesList.erase(%i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//if we're not locked, or we are exclusive, go ahead and add it to the pile
|
||||||
|
//(ensures exclusives get re-added after that erasure)
|
||||||
|
if (!%locked || %isExclusive)
|
||||||
|
DatablockFilesList.add(%fullPath,%isExclusive);
|
||||||
|
if ($traceModuleCalls)
|
||||||
|
DatablockFilesList.echo();
|
||||||
|
}
|
||||||
|
|
||||||
|
function SimSet::unRegisterDatablock(%scopeSet, %datablockFilePath)
|
||||||
|
{
|
||||||
|
if ($traceModuleCalls)
|
||||||
|
warn("SimSet::unRegisterDatablock");
|
||||||
|
%name = %scopeSet.getName();
|
||||||
|
%moduleDef = ModuleDatabase.findModule(%name, 1);
|
||||||
|
|
||||||
|
if(!isObject(%moduleDef))
|
||||||
|
{
|
||||||
|
error("Module::unRegisterDatablock() - unable to find a module with the moduleID of " @ %name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
DatablockFilesList.add(%fullPath);
|
if(!isObject(DatablockFilesList))
|
||||||
|
{
|
||||||
|
error("Module::unRegisterDatablock() - DatablockFilesList array object doesn't exist!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
%relativePath = makeRelativePath(%datablockFilePath);
|
||||||
|
|
||||||
|
%fullPath = pathConcat(%moduleDef.ModulePath, %relativePath);
|
||||||
|
///go through all entries
|
||||||
|
%locked = false;
|
||||||
|
%dbFilecount = DatablockFilesList.count();
|
||||||
|
for (%i=0;%i<%dbFilecount;%i++)
|
||||||
|
{
|
||||||
|
%check = DatablockFilesList.getKey(%i);
|
||||||
|
//look for a substring match
|
||||||
|
%isMatch = strIsMatchExpr("*"@ %datablockFilePath,%check );
|
||||||
|
if (%isMatch)
|
||||||
|
{
|
||||||
|
//check if we're already locked in. if not, kill it.
|
||||||
|
%locked = DatablockFilesList.getValue(%i);
|
||||||
|
if (!%locked)
|
||||||
|
{
|
||||||
|
DatablockFilesList.erase(%i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($traceModuleCalls)
|
||||||
|
DatablockFilesList.echo();
|
||||||
|
}
|
||||||
|
|
||||||
|
function SimSet::queueExec(%scopeSet, %execFilePath, %isExclusive)
|
||||||
|
{
|
||||||
|
if ($traceModuleCalls)
|
||||||
|
warn("SimSet::queueExec");
|
||||||
|
%name = %scopeSet.getName();
|
||||||
|
%moduleDef = ModuleDatabase.findModule(%name, 1);
|
||||||
|
|
||||||
|
if(!isObject(%moduleDef))
|
||||||
|
{
|
||||||
|
error("Module::queueExec() - unable to find a module with the moduleID of " @ %name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!isObject(ExecFilesList))
|
||||||
|
{
|
||||||
|
error("Module::queueExec() - ExecFilesList array object doesn't exist!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($traceModuleCalls)
|
||||||
|
warn("module root path="@ makeRelativePath(%moduleDef.ModulePath));
|
||||||
|
|
||||||
|
%fullPath = makeRelativePath(%moduleDef.ModulePath) @ %execFilePath;
|
||||||
|
///go through all entries
|
||||||
|
%locked = false;
|
||||||
|
%execFilecount = ExecFilesList.count();
|
||||||
|
for (%i=0;%i<%execFilecount;%i++)
|
||||||
|
{
|
||||||
|
%check = ExecFilesList.getKey(%i);
|
||||||
|
//look for a substring match
|
||||||
|
%isMatch = strIsMatchExpr("*"@ %execFilePath,%check );
|
||||||
|
if (%isMatch)
|
||||||
|
{
|
||||||
|
//check if we're already locked in
|
||||||
|
//and kill off any duplicates
|
||||||
|
//do note that doing it in this order means setting exclusive twice
|
||||||
|
//allows one to override exclusive with exclusive
|
||||||
|
%locked = ExecFilesList.getValue(%i);
|
||||||
|
if ((!%locked && !%isExclusive)&&($reportModuleFileConflicts))
|
||||||
|
error("found" SPC %execFilePath SPC "duplicate file!");
|
||||||
|
if (!%locked || (%locked && %isExclusive))
|
||||||
|
{
|
||||||
|
ExecFilesList.erase(%i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//if we're not locked, or we are exclusive, go ahead and add it to the pile
|
||||||
|
//(ensures exclusives get re-added after that erasure)
|
||||||
|
if (!%locked || %isExclusive)
|
||||||
|
ExecFilesList.add(%fullPath,%isExclusive);
|
||||||
|
if ($traceModuleCalls)
|
||||||
|
ExecFilesList.echo();
|
||||||
|
}
|
||||||
|
|
||||||
|
function SimSet::unQueueExec(%scopeSet, %execFilePath)
|
||||||
|
{
|
||||||
|
if ($traceModuleCalls)
|
||||||
|
warn("SimSet::unRegisterDatablock");
|
||||||
|
%name = %scopeSet.getName();
|
||||||
|
%moduleDef = ModuleDatabase.findModule(%name, 1);
|
||||||
|
|
||||||
|
if(!isObject(%moduleDef))
|
||||||
|
{
|
||||||
|
error("Module::unRegisterDatablock() - unable to find a module with the moduleID of " @ %name);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!isObject(ExecFilesList))
|
||||||
|
{
|
||||||
|
error("Module::unRegisterDatablock() - ExecFilesList array object doesn't exist!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
%relativePath = makeRelativePath(%execFilePath);
|
||||||
|
|
||||||
|
%fullPath = pathConcat(%moduleDef.ModulePath, %relativePath);
|
||||||
|
///go through all entries
|
||||||
|
%locked = false;
|
||||||
|
%execFilecount = ExecFilesList.count();
|
||||||
|
for (%i=0;%i<%execFilecount;%i++)
|
||||||
|
{
|
||||||
|
%check = ExecFilesList.getKey(%i);
|
||||||
|
//look for a substring match
|
||||||
|
%isMatch = strIsMatchExpr("*"@ %execFilePath,%check );
|
||||||
|
if (%isMatch)
|
||||||
|
{
|
||||||
|
//check if we're already locked in. if not, kill it.
|
||||||
|
%locked = ExecFilesList.getValue(%i);
|
||||||
|
if (!%locked)
|
||||||
|
{
|
||||||
|
ExecFilesList.erase(%i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($traceModuleCalls)
|
||||||
|
ExecFilesList.echo();
|
||||||
}
|
}
|
||||||
|
|
@ -4,7 +4,7 @@ function ExampleComponent::onAdd(%this)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
//onAdd is called when the component is removed and deleted from it's owner entity.
|
//onRemove is called when the component is removed and deleted from it's owner entity.
|
||||||
function ExampleComponent::onRemove(%this)
|
function ExampleComponent::onRemove(%this)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
@ -15,7 +15,7 @@ function ExampleComponent::onClientConnect(%this, %client)
|
||||||
|
|
||||||
}
|
}
|
||||||
//onClientDisconnect is called any time a client disconnects from the server.
|
//onClientDisconnect is called any time a client disconnects from the server.
|
||||||
function ExampleComponent::onClientDisonnect(%this, %client)
|
function ExampleComponent::onClientDisconnect(%this, %client)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -367,7 +367,7 @@ function OptionsMenuBackSetting::onClick(%this)
|
||||||
|
|
||||||
//advance by one
|
//advance by one
|
||||||
%newSetting = getToken(%settingsList, ",", %currentSettingIdx);
|
%newSetting = getToken(%settingsList, ",", %currentSettingIdx);
|
||||||
eval(%settingCtrl.qualitySettingGroup@"::set("@%newSetting@");");
|
eval(%settingCtrl.qualitySettingGroup@"::set(\""@%newSetting@"\");");
|
||||||
%settingCtrl-->SettingText.setText( %newSetting );
|
%settingCtrl-->SettingText.setText( %newSetting );
|
||||||
|
|
||||||
if(%currentSettingIdx == %settingsListCount)
|
if(%currentSettingIdx == %settingsListCount)
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,14 @@ function DisplayMenu::apply(%this)
|
||||||
}
|
}
|
||||||
|
|
||||||
//Update the display settings now
|
//Update the display settings now
|
||||||
$pref::Video::Resolution = getWord( $pref::Video::Resolution, 0 ) SPC getWord( $pref::Video::Resolution, 2 );
|
if (getWord( $pref::Video::Resolution, 2) == "")
|
||||||
|
{
|
||||||
|
$pref::Video::Resolution = getWord( $pref::Video::Resolution, 0 ) SPC getWord( $pref::Video::Resolution, 1 );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$pref::Video::Resolution = getWord( $pref::Video::Resolution, 0 ) SPC getWord( $pref::Video::Resolution, 2 );
|
||||||
|
}
|
||||||
|
|
||||||
/*if ( %newFullScreen $= "false" )
|
/*if ( %newFullScreen $= "false" )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,56 +1,56 @@
|
||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||||
<AssetImportSettings>
|
<AssetImportSettings>
|
||||||
<Group name="TestConfig">
|
<Group name="TestConfig">
|
||||||
<Group name="Meshes">
|
<Group name="Animations">
|
||||||
<Setting name="DoUpAxisOverride">0</Setting>
|
<Setting name="SeparateAnimations">1</Setting>
|
||||||
<Setting name="IgnoreNodeScale">0</Setting>
|
<Setting name="ImportAnimations">1</Setting>
|
||||||
<Setting name="ScaleOverride">1</Setting>
|
|
||||||
<Setting name="CollapseSubmeshes">0</Setting>
|
|
||||||
<Setting name="AdjustCenter">0</Setting>
|
|
||||||
<Setting name="AdjustFloor">0</Setting>
|
|
||||||
<Setting name="UpAxisOverride">Z_AXIS</Setting>
|
|
||||||
<Setting name="LODType">TrailingNumber</Setting>
|
|
||||||
</Group>
|
</Group>
|
||||||
<Group name="Materials">
|
<Group name="Materials">
|
||||||
<Setting name="ImportMaterials">1</Setting>
|
|
||||||
<Setting name="CreateComposites">1</Setting>
|
|
||||||
<Setting name="UseDiffuseSuffixOnOriginImage">1</Setting>
|
|
||||||
<Setting name="UseExistingMaterials">1</Setting>
|
|
||||||
<Setting name="IgnoreMaterials">ColorEffect*,</Setting>
|
<Setting name="IgnoreMaterials">ColorEffect*,</Setting>
|
||||||
|
<Setting name="UseExistingMaterials">1</Setting>
|
||||||
|
<Setting name="UseDiffuseSuffixOnOriginImage">1</Setting>
|
||||||
|
<Setting name="CreateComposites">1</Setting>
|
||||||
|
<Setting name="ImportMaterials">1</Setting>
|
||||||
|
</Group>
|
||||||
|
<Group name="Meshes">
|
||||||
|
<Setting name="AdjustFloor">0</Setting>
|
||||||
|
<Setting name="CollapseSubmeshes">0</Setting>
|
||||||
|
<Setting name="IgnoreNodeScale">0</Setting>
|
||||||
|
<Setting name="UpAxisOverride">Z_AXIS</Setting>
|
||||||
|
<Setting name="ScaleOverride">1</Setting>
|
||||||
|
<Setting name="LODType">TrailingNumber</Setting>
|
||||||
|
<Setting name="AdjustCenter">0</Setting>
|
||||||
|
<Setting name="DoUpAxisOverride">0</Setting>
|
||||||
</Group>
|
</Group>
|
||||||
<Group name="Images">
|
<Group name="Images">
|
||||||
<Setting name="AOTypeSuffixes">_AO,_AMBIENT,_AMBIENTOCCLUSION</Setting>
|
|
||||||
<Setting name="MetalnessTypeSuffixes">_METAL,_MET,_METALNESS,_METALLIC</Setting>
|
|
||||||
<Setting name="PopulateMaterialMaps">1</Setting>
|
|
||||||
<Setting name="UseMips">1</Setting>
|
|
||||||
<Setting name="Compressed">1</Setting>
|
|
||||||
<Setting name="TextureFilteringMode">Bilinear</Setting>
|
|
||||||
<Setting name="GenerateMaterialOnImport">1</Setting>
|
|
||||||
<Setting name="RoughnessTypeSuffixes">_ROUGH,_ROUGHNESS</Setting>
|
|
||||||
<Setting name="IsHDR">0</Setting>
|
|
||||||
<Setting name="Scaling">1.0</Setting>
|
<Setting name="Scaling">1.0</Setting>
|
||||||
<Setting name="DiffuseTypeSuffixes">_ALBEDO,_DIFFUSE,_ALB,_DIF,_COLOR,_COL,_baseColor,</Setting>
|
<Setting name="UseMips">1</Setting>
|
||||||
<Setting name="CompositeTypeSuffixes">_COMP,_COMPOSITE</Setting>
|
<Setting name="TextureFilteringMode">Bilinear</Setting>
|
||||||
<Setting name="ImageType">N/A</Setting>
|
<Setting name="IsHDR">0</Setting>
|
||||||
<Setting name="SmoothnessTypeSuffixes">_SMOOTH,_SMOOTHNESS</Setting>
|
<Setting name="MetalnessTypeSuffixes">_METAL,_MET,_METALNESS,_METALLIC</Setting>
|
||||||
<Setting name="NormalTypeSuffixes">_NORMAL,_NORM</Setting>
|
<Setting name="NormalTypeSuffixes">_NORMAL,_NORM</Setting>
|
||||||
|
<Setting name="AOTypeSuffixes">_AO,_AMBIENT,_AMBIENTOCCLUSION</Setting>
|
||||||
|
<Setting name="ImageType">N/A</Setting>
|
||||||
|
<Setting name="Compressed">1</Setting>
|
||||||
|
<Setting name="RoughnessTypeSuffixes">_ROUGH,_ROUGHNESS</Setting>
|
||||||
|
<Setting name="SmoothnessTypeSuffixes">_SMOOTH,_SMOOTHNESS</Setting>
|
||||||
|
<Setting name="DiffuseTypeSuffixes">_ALBEDO,_DIFFUSE,_ALB,_DIF,_COLOR,_COL,_baseColor,_a,</Setting>
|
||||||
|
<Setting name="PopulateMaterialMaps">1</Setting>
|
||||||
|
<Setting name="GenerateMaterialOnImport">1</Setting>
|
||||||
|
<Setting name="CompositeTypeSuffixes">_COMP,_COMPOSITE</Setting>
|
||||||
</Group>
|
</Group>
|
||||||
<Group name="Collision">
|
<Group name="Collision">
|
||||||
<Setting name="GenerateLOSCollisions">1</Setting>
|
<Setting name="GenerateLOSCollisions">1</Setting>
|
||||||
<Setting name="GenerateCollisions">1</Setting>
|
|
||||||
<Setting name="LOSCollisionMeshPrefix">LOS</Setting>
|
|
||||||
<Setting name="CollisionMeshPrefix">Col</Setting>
|
<Setting name="CollisionMeshPrefix">Col</Setting>
|
||||||
<Setting name="GenCollisionType">CollisionMesh</Setting>
|
<Setting name="GenCollisionType">CollisionMesh</Setting>
|
||||||
|
<Setting name="GenerateCollisions">1</Setting>
|
||||||
|
<Setting name="LOSCollisionMeshPrefix">LOS</Setting>
|
||||||
<Setting name="GenLOSCollisionType">CollisionMesh</Setting>
|
<Setting name="GenLOSCollisionType">CollisionMesh</Setting>
|
||||||
</Group>
|
</Group>
|
||||||
<Group name="Animations">
|
|
||||||
<Setting name="ImportAnimations">1</Setting>
|
|
||||||
<Setting name="SeparateAnimations">1</Setting>
|
|
||||||
</Group>
|
|
||||||
<Group name="Sounds">
|
<Group name="Sounds">
|
||||||
<Setting name="PitchAdjust">1.0</Setting>
|
<Setting name="PitchAdjust">1.0</Setting>
|
||||||
<Setting name="Compressed">0</Setting>
|
|
||||||
<Setting name="VolumeAdjust">1.0</Setting>
|
<Setting name="VolumeAdjust">1.0</Setting>
|
||||||
|
<Setting name="Compressed">0</Setting>
|
||||||
</Group>
|
</Group>
|
||||||
<Group name="General">
|
<Group name="General">
|
||||||
<Setting name="DuplicatAutoResolution">AutoPrune</Setting>
|
<Setting name="DuplicatAutoResolution">AutoPrune</Setting>
|
||||||
|
|
|
||||||
|
|
@ -13,13 +13,23 @@
|
||||||
isContainer = "1";
|
isContainer = "1";
|
||||||
canSave = "1";
|
canSave = "1";
|
||||||
canSaveDynamicFields = "1";
|
canSaveDynamicFields = "1";
|
||||||
AddNewArtAssetPopup = "18222";
|
AddNewArtAssetPopup = "18110";
|
||||||
AddNewAssetPopup = "18223";
|
AddNewAssetPopup = "18112";
|
||||||
AddNewScriptAssetPopup = "18221";
|
AddNewCppAssetPopup = "18111";
|
||||||
|
AddNewScriptAssetPopup = "18109";
|
||||||
coreModulesFilter = "0";
|
coreModulesFilter = "0";
|
||||||
currentPreviewPage = "0";
|
currentPreviewPage = "0";
|
||||||
enabled = "1";
|
Enabled = "1";
|
||||||
|
importAssetFinalListArray = "20689";
|
||||||
|
ImportAssetResolutionsPopup = "18119";
|
||||||
|
importAssetUnprocessedListArray = "20688";
|
||||||
|
importingFilesArray = "20687";
|
||||||
isReImportingAsset = "0";
|
isReImportingAsset = "0";
|
||||||
|
navigationHistoryIdx = "0";
|
||||||
|
onlyShowModulesWithAssets = "0";
|
||||||
|
previewData = "19953";
|
||||||
|
previewSize = "80";
|
||||||
|
templateFilesPath = "tools/assetBrowser/scripts/templateFiles/";
|
||||||
totalPages = "1";
|
totalPages = "1";
|
||||||
treeFilterMode = "list";
|
treeFilterMode = "list";
|
||||||
|
|
||||||
|
|
@ -201,7 +211,7 @@
|
||||||
groupNum = "-1";
|
groupNum = "-1";
|
||||||
buttonType = "PushButton";
|
buttonType = "PushButton";
|
||||||
useMouseEvents = "0";
|
useMouseEvents = "0";
|
||||||
position = "50 22";
|
position = "52 22";
|
||||||
extent = "45 19";
|
extent = "45 19";
|
||||||
minExtent = "8 2";
|
minExtent = "8 2";
|
||||||
horizSizing = "right";
|
horizSizing = "right";
|
||||||
|
|
@ -215,97 +225,107 @@
|
||||||
canSave = "1";
|
canSave = "1";
|
||||||
canSaveDynamicFields = "0";
|
canSaveDynamicFields = "0";
|
||||||
};
|
};
|
||||||
new GuiWindowCtrl(TagFilterWindow) {
|
new GuiBitmapButtonCtrl(AssetBrowser_NavigateBackBtn) {
|
||||||
text = "New Window";
|
bitmap = "tools/gui/images/folderUp.png";
|
||||||
resizeWidth = "1";
|
bitmapMode = "Centered";
|
||||||
resizeHeight = "1";
|
autoFitExtents = "0";
|
||||||
canMove = "1";
|
useModifiers = "0";
|
||||||
canClose = "0";
|
useStates = "1";
|
||||||
canMinimize = "0";
|
masked = "0";
|
||||||
canMaximize = "0";
|
groupNum = "-1";
|
||||||
canCollapse = "0";
|
buttonType = "PushButton";
|
||||||
edgeSnap = "1";
|
useMouseEvents = "0";
|
||||||
docking = "None";
|
position = "98 21";
|
||||||
margin = "4 4 4 4";
|
extent = "22 22";
|
||||||
padding = "0 0 0 0";
|
minExtent = "8 2";
|
||||||
anchorTop = "0";
|
horizSizing = "right";
|
||||||
anchorBottom = "0";
|
vertSizing = "bottom";
|
||||||
anchorLeft = "0";
|
profile = "GuiDefaultProfile";
|
||||||
anchorRight = "0";
|
visible = "1";
|
||||||
position = "129 62";
|
active = "1";
|
||||||
extent = "161 250";
|
command = "AssetBrowser.navigateHistoryBack();";
|
||||||
minExtent = "161 86";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
horizSizing = "windowRelative";
|
hovertime = "1000";
|
||||||
vertSizing = "windowRelative";
|
isContainer = "0";
|
||||||
profile = "ToolsGuiToolbarWindowProfile";
|
canSave = "1";
|
||||||
visible = "0";
|
canSaveDynamicFields = "0";
|
||||||
|
};
|
||||||
|
new GuiBitmapButtonCtrl(AssetBrowser_NavigateForwardBtn) {
|
||||||
|
bitmap = "tools/gui/images/folderDown.png";
|
||||||
|
bitmapMode = "Centered";
|
||||||
|
autoFitExtents = "0";
|
||||||
|
useModifiers = "0";
|
||||||
|
useStates = "1";
|
||||||
|
masked = "0";
|
||||||
|
groupNum = "-1";
|
||||||
|
buttonType = "PushButton";
|
||||||
|
useMouseEvents = "0";
|
||||||
|
position = "120 21";
|
||||||
|
extent = "22 22";
|
||||||
|
minExtent = "8 2";
|
||||||
|
horizSizing = "right";
|
||||||
|
vertSizing = "bottom";
|
||||||
|
profile = "GuiDefaultProfile";
|
||||||
|
visible = "1";
|
||||||
|
active = "1";
|
||||||
|
command = "AssetBrowser.navigateHistoryForward();";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
hovertime = "1000";
|
||||||
|
isContainer = "0";
|
||||||
|
canSave = "1";
|
||||||
|
canSaveDynamicFields = "0";
|
||||||
|
};
|
||||||
|
new GuiStackControl(AssetBrowser_BreadcrumbBar) {
|
||||||
|
stackingType = "Horizontal";
|
||||||
|
horizStacking = "Left to Right";
|
||||||
|
vertStacking = "Top to Bottom";
|
||||||
|
padding = "0";
|
||||||
|
dynamicSize = "0";
|
||||||
|
dynamicNonStackExtent = "0";
|
||||||
|
dynamicPos = "0";
|
||||||
|
changeChildSizeToFit = "0";
|
||||||
|
changeChildPosition = "1";
|
||||||
|
position = "156 21";
|
||||||
|
extent = "326 23";
|
||||||
|
minExtent = "16 16";
|
||||||
|
horizSizing = "width";
|
||||||
|
vertSizing = "bottom";
|
||||||
|
profile = "GuiDefaultProfile";
|
||||||
|
visible = "1";
|
||||||
active = "1";
|
active = "1";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
hovertime = "1000";
|
hovertime = "1000";
|
||||||
isContainer = "1";
|
isContainer = "1";
|
||||||
internalName = "VisibilityLayerWindow";
|
|
||||||
hidden = "1";
|
|
||||||
canSave = "1";
|
canSave = "1";
|
||||||
canSaveDynamicFields = "0";
|
canSaveDynamicFields = "0";
|
||||||
|
|
||||||
new GuiScrollCtrl() {
|
|
||||||
willFirstRespond = "1";
|
|
||||||
hScrollBar = "alwaysOff";
|
|
||||||
vScrollBar = "dynamic";
|
|
||||||
lockHorizScroll = "1";
|
|
||||||
lockVertScroll = "0";
|
|
||||||
constantThumbHeight = "0";
|
|
||||||
childMargin = "2 0";
|
|
||||||
mouseWheelScrollSpeed = "-1";
|
|
||||||
docking = "Client";
|
|
||||||
margin = "0 0 0 0";
|
|
||||||
padding = "0 0 0 0";
|
|
||||||
anchorTop = "1";
|
|
||||||
anchorBottom = "0";
|
|
||||||
anchorLeft = "1";
|
|
||||||
anchorRight = "0";
|
|
||||||
position = "1 9";
|
|
||||||
extent = "159 238";
|
|
||||||
minExtent = "8 2";
|
|
||||||
horizSizing = "width";
|
|
||||||
vertSizing = "height";
|
|
||||||
profile = "ToolsGuiScrollProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
tooltipProfile = "ToolsGuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "1";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
|
|
||||||
new GuiStackControl(TagFilterList) {
|
|
||||||
stackingType = "Vertical";
|
|
||||||
horizStacking = "Left to Right";
|
|
||||||
vertStacking = "Top to Bottom";
|
|
||||||
padding = "-2";
|
|
||||||
dynamicSize = "1";
|
|
||||||
dynamicNonStackExtent = "0";
|
|
||||||
dynamicPos = "0";
|
|
||||||
changeChildSizeToFit = "1";
|
|
||||||
changeChildPosition = "1";
|
|
||||||
position = "3 1";
|
|
||||||
extent = "153 16";
|
|
||||||
minExtent = "16 16";
|
|
||||||
horizSizing = "width";
|
|
||||||
vertSizing = "bottom";
|
|
||||||
profile = "ToolsGuiDefaultProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
tooltipProfile = "ToolsGuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "1";
|
|
||||||
internalName = "theVisOptionsList";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
new GuiSplitContainer() {
|
new GuiBitmapButtonCtrl(AssetBrowser_VisibilityOptions) {
|
||||||
|
bitmap = "tools/gui/images/visible";
|
||||||
|
bitmapMode = "Centered";
|
||||||
|
autoFitExtents = "0";
|
||||||
|
useModifiers = "0";
|
||||||
|
useStates = "1";
|
||||||
|
masked = "0";
|
||||||
|
groupNum = "-1";
|
||||||
|
buttonType = "PushButton";
|
||||||
|
useMouseEvents = "0";
|
||||||
|
position = "487 21";
|
||||||
|
extent = "23 23";
|
||||||
|
minExtent = "8 2";
|
||||||
|
horizSizing = "left";
|
||||||
|
vertSizing = "bottom";
|
||||||
|
profile = "ToolsGuiSolidDefaultProfile";
|
||||||
|
visible = "1";
|
||||||
|
active = "1";
|
||||||
|
command = "AssetBrowser.showVisibiltyOptions();";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
tooltip = "Visibility Options";
|
||||||
|
hovertime = "1000";
|
||||||
|
isContainer = "0";
|
||||||
|
canSave = "1";
|
||||||
|
canSaveDynamicFields = "0";
|
||||||
|
};
|
||||||
|
new GuiSplitContainer(AssetBrowser_MainSplit) {
|
||||||
orientation = "Vertical";
|
orientation = "Vertical";
|
||||||
splitterSize = "2";
|
splitterSize = "2";
|
||||||
splitPoint = "149 100";
|
splitPoint = "149 100";
|
||||||
|
|
@ -323,7 +343,7 @@
|
||||||
minExtent = "64 64";
|
minExtent = "64 64";
|
||||||
horizSizing = "relative";
|
horizSizing = "relative";
|
||||||
vertSizing = "height";
|
vertSizing = "height";
|
||||||
profile = "ToolsGuiDefaultProfile";
|
profile = "ToolsGuiSolidDefaultProfile";
|
||||||
visible = "1";
|
visible = "1";
|
||||||
active = "1";
|
active = "1";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
|
@ -332,7 +352,7 @@
|
||||||
canSave = "1";
|
canSave = "1";
|
||||||
canSaveDynamicFields = "0";
|
canSaveDynamicFields = "0";
|
||||||
|
|
||||||
new GuiPanel() {
|
new GuiPanel(AssetBrowser_FoldersPanel) {
|
||||||
docking = "Client";
|
docking = "Client";
|
||||||
margin = "0 0 0 0";
|
margin = "0 0 0 0";
|
||||||
padding = "0 0 0 0";
|
padding = "0 0 0 0";
|
||||||
|
|
@ -342,10 +362,10 @@
|
||||||
anchorRight = "0";
|
anchorRight = "0";
|
||||||
position = "0 0";
|
position = "0 0";
|
||||||
extent = "147 509";
|
extent = "147 509";
|
||||||
minExtent = "16 16";
|
minExtent = "0 0";
|
||||||
horizSizing = "right";
|
horizSizing = "right";
|
||||||
vertSizing = "bottom";
|
vertSizing = "bottom";
|
||||||
profile = "ToolsGuiDefaultProfile";
|
profile = "ToolsGuiSolidDefaultProfile";
|
||||||
visible = "1";
|
visible = "1";
|
||||||
active = "1";
|
active = "1";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
|
@ -376,8 +396,13 @@
|
||||||
canSave = "1";
|
canSave = "1";
|
||||||
canSaveDynamicFields = "0";
|
canSaveDynamicFields = "0";
|
||||||
|
|
||||||
new GuiTextCtrl() {
|
new GuiTextEditCtrl(AssetBrowserFolderSearchFilter) {
|
||||||
text = "Filters";
|
historySize = "0";
|
||||||
|
tabComplete = "0";
|
||||||
|
sinkAllKeyEvents = "0";
|
||||||
|
password = "0";
|
||||||
|
passwordMask = "*";
|
||||||
|
text = "Search Folders...";
|
||||||
maxLength = "1024";
|
maxLength = "1024";
|
||||||
margin = "0 0 0 0";
|
margin = "0 0 0 0";
|
||||||
padding = "0 0 0 0";
|
padding = "0 0 0 0";
|
||||||
|
|
@ -385,23 +410,24 @@
|
||||||
anchorBottom = "0";
|
anchorBottom = "0";
|
||||||
anchorLeft = "1";
|
anchorLeft = "1";
|
||||||
anchorRight = "0";
|
anchorRight = "0";
|
||||||
position = "5 0";
|
position = "0 0";
|
||||||
extent = "30 16";
|
extent = "148 18";
|
||||||
minExtent = "8 2";
|
minExtent = "8 2";
|
||||||
horizSizing = "right";
|
horizSizing = "width";
|
||||||
vertSizing = "bottom";
|
vertSizing = "height";
|
||||||
profile = "ToolsGuiDefaultProfile";
|
profile = "ToolsGuiTextEditProfile";
|
||||||
visible = "1";
|
visible = "1";
|
||||||
active = "1";
|
active = "1";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
hovertime = "1000";
|
hovertime = "1000";
|
||||||
isContainer = "1";
|
isContainer = "1";
|
||||||
|
class = "AssetBrowserSearchFilterTxt";
|
||||||
canSave = "1";
|
canSave = "1";
|
||||||
canSaveDynamicFields = "0";
|
canSaveDynamicFields = "0";
|
||||||
};
|
};
|
||||||
new GuiBitmapButtonCtrl() {
|
new GuiBitmapButtonCtrl(AssetBrowser_ClearFolderFilterBtn) {
|
||||||
bitmap = "tools/gui/images/visible";
|
bitmap = "tools/gui/images/clear-icon";
|
||||||
bitmapMode = "Stretched";
|
bitmapMode = "Centered";
|
||||||
autoFitExtents = "0";
|
autoFitExtents = "0";
|
||||||
useModifiers = "0";
|
useModifiers = "0";
|
||||||
useStates = "1";
|
useStates = "1";
|
||||||
|
|
@ -409,17 +435,15 @@
|
||||||
groupNum = "-1";
|
groupNum = "-1";
|
||||||
buttonType = "PushButton";
|
buttonType = "PushButton";
|
||||||
useMouseEvents = "0";
|
useMouseEvents = "0";
|
||||||
position = "128 -1";
|
position = "132 0";
|
||||||
extent = "18 19";
|
extent = "15 15";
|
||||||
minExtent = "8 2";
|
minExtent = "8 2";
|
||||||
horizSizing = "right";
|
horizSizing = "left";
|
||||||
vertSizing = "bottom";
|
vertSizing = "bottom";
|
||||||
profile = "ToolsGuiDefaultProfile";
|
profile = "GuiDefaultProfile";
|
||||||
visible = "1";
|
visible = "1";
|
||||||
active = "1";
|
active = "1";
|
||||||
command = "AssetBrowser.showFilterPopup();";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
tooltip = "Views assets via module-oriented list tree.";
|
|
||||||
hovertime = "1000";
|
hovertime = "1000";
|
||||||
isContainer = "0";
|
isContainer = "0";
|
||||||
canSave = "1";
|
canSave = "1";
|
||||||
|
|
@ -438,7 +462,7 @@
|
||||||
minExtent = "8 2";
|
minExtent = "8 2";
|
||||||
horizSizing = "width";
|
horizSizing = "width";
|
||||||
vertSizing = "height";
|
vertSizing = "height";
|
||||||
profile = "ToolsGuiDefaultProfile";
|
profile = "ToolsGuiSolidDefaultProfile";
|
||||||
visible = "1";
|
visible = "1";
|
||||||
active = "1";
|
active = "1";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
|
@ -471,7 +495,7 @@
|
||||||
profile = "GuiEditorScrollProfile";
|
profile = "GuiEditorScrollProfile";
|
||||||
visible = "1";
|
visible = "1";
|
||||||
active = "1";
|
active = "1";
|
||||||
tooltipProfile = "ToolsGuiDefaultProfile";
|
tooltipProfile = "ToolsGuiSolidDefaultProfile";
|
||||||
hovertime = "1000";
|
hovertime = "1000";
|
||||||
isContainer = "1";
|
isContainer = "1";
|
||||||
canSave = "1";
|
canSave = "1";
|
||||||
|
|
@ -500,7 +524,7 @@
|
||||||
canRenameObjects = "1";
|
canRenameObjects = "1";
|
||||||
renameInternal = "0";
|
renameInternal = "0";
|
||||||
position = "1 1";
|
position = "1 1";
|
||||||
extent = "145 252";
|
extent = "145 147";
|
||||||
minExtent = "8 2";
|
minExtent = "8 2";
|
||||||
horizSizing = "right";
|
horizSizing = "right";
|
||||||
vertSizing = "bottom";
|
vertSizing = "bottom";
|
||||||
|
|
@ -517,7 +541,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
new GuiPanel() {
|
new GuiPanel(AssetBrowser_AssetsPanel) {
|
||||||
docking = "Client";
|
docking = "Client";
|
||||||
margin = "0 0 0 0";
|
margin = "0 0 0 0";
|
||||||
padding = "0 0 0 0";
|
padding = "0 0 0 0";
|
||||||
|
|
@ -530,7 +554,7 @@
|
||||||
minExtent = "16 16";
|
minExtent = "16 16";
|
||||||
horizSizing = "right";
|
horizSizing = "right";
|
||||||
vertSizing = "bottom";
|
vertSizing = "bottom";
|
||||||
profile = "ToolsGuiDefaultProfile";
|
profile = "ToolsGuiSolidDefaultProfile";
|
||||||
visible = "1";
|
visible = "1";
|
||||||
active = "1";
|
active = "1";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
|
@ -548,7 +572,7 @@
|
||||||
anchorLeft = "1";
|
anchorLeft = "1";
|
||||||
anchorRight = "0";
|
anchorRight = "0";
|
||||||
position = "1 0";
|
position = "1 0";
|
||||||
extent = "354 41";
|
extent = "354 19";
|
||||||
minExtent = "8 2";
|
minExtent = "8 2";
|
||||||
horizSizing = "width";
|
horizSizing = "width";
|
||||||
vertSizing = "bottom";
|
vertSizing = "bottom";
|
||||||
|
|
@ -561,65 +585,13 @@
|
||||||
canSave = "1";
|
canSave = "1";
|
||||||
canSaveDynamicFields = "0";
|
canSaveDynamicFields = "0";
|
||||||
|
|
||||||
new GuiBitmapButtonCtrl() {
|
|
||||||
bitmap = "tools/gui/images/new";
|
|
||||||
bitmapMode = "Stretched";
|
|
||||||
autoFitExtents = "0";
|
|
||||||
useModifiers = "0";
|
|
||||||
useStates = "1";
|
|
||||||
masked = "0";
|
|
||||||
groupNum = "-1";
|
|
||||||
buttonType = "PushButton";
|
|
||||||
useMouseEvents = "0";
|
|
||||||
position = "42 22";
|
|
||||||
extent = "15 15";
|
|
||||||
minExtent = "8 2";
|
|
||||||
horizSizing = "right";
|
|
||||||
vertSizing = "bottom";
|
|
||||||
profile = "ToolsGuiDefaultProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
command = "AssetBrowser.createNewAsset();";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
tooltip = "Create New Asset";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "0";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
new GuiBitmapButtonCtrl() {
|
|
||||||
bitmap = "tools/gui/images/delete";
|
|
||||||
bitmapMode = "Stretched";
|
|
||||||
autoFitExtents = "0";
|
|
||||||
useModifiers = "0";
|
|
||||||
useStates = "1";
|
|
||||||
masked = "0";
|
|
||||||
groupNum = "-1";
|
|
||||||
buttonType = "PushButton";
|
|
||||||
useMouseEvents = "0";
|
|
||||||
position = "23 22";
|
|
||||||
extent = "15 15";
|
|
||||||
minExtent = "8 2";
|
|
||||||
horizSizing = "right";
|
|
||||||
vertSizing = "bottom";
|
|
||||||
profile = "ToolsGuiDefaultProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
command = "AssetBrowser.showDeleteDialog();";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
tooltip = "Delete Asset";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "0";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
new GuiTextEditCtrl(AssetBrowserSearchFilter) {
|
new GuiTextEditCtrl(AssetBrowserSearchFilter) {
|
||||||
historySize = "0";
|
historySize = "0";
|
||||||
tabComplete = "0";
|
tabComplete = "0";
|
||||||
sinkAllKeyEvents = "0";
|
sinkAllKeyEvents = "0";
|
||||||
password = "0";
|
password = "0";
|
||||||
passwordMask = "*";
|
passwordMask = "*";
|
||||||
text = "\c2Filter...";
|
text = "Search Assets...";
|
||||||
maxLength = "1024";
|
maxLength = "1024";
|
||||||
margin = "0 0 0 0";
|
margin = "0 0 0 0";
|
||||||
padding = "0 0 0 0";
|
padding = "0 0 0 0";
|
||||||
|
|
@ -627,8 +599,8 @@
|
||||||
anchorBottom = "0";
|
anchorBottom = "0";
|
||||||
anchorLeft = "1";
|
anchorLeft = "1";
|
||||||
anchorRight = "0";
|
anchorRight = "0";
|
||||||
position = "62 19";
|
position = "21 1";
|
||||||
extent = "273 18";
|
extent = "314 18";
|
||||||
minExtent = "8 2";
|
minExtent = "8 2";
|
||||||
horizSizing = "width";
|
horizSizing = "width";
|
||||||
vertSizing = "bottom";
|
vertSizing = "bottom";
|
||||||
|
|
@ -638,12 +610,12 @@
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
hovertime = "1000";
|
hovertime = "1000";
|
||||||
isContainer = "1";
|
isContainer = "1";
|
||||||
class = "AssetBrowserSearchFilterText";
|
class = "AssetBrowserSearchFilterTxt";
|
||||||
canSave = "1";
|
canSave = "1";
|
||||||
canSaveDynamicFields = "0";
|
canSaveDynamicFields = "0";
|
||||||
};
|
};
|
||||||
new GuiBitmapButtonCtrl(TagFilterButton) {
|
new GuiBitmapButtonCtrl(AssetBrowser_ClearAssetFilterBtn) {
|
||||||
bitmap = "tools/gui/images/visible";
|
bitmap = "tools/gui/images/clear-icon";
|
||||||
bitmapMode = "Stretched";
|
bitmapMode = "Stretched";
|
||||||
autoFitExtents = "0";
|
autoFitExtents = "0";
|
||||||
useModifiers = "0";
|
useModifiers = "0";
|
||||||
|
|
@ -652,46 +624,49 @@
|
||||||
groupNum = "-1";
|
groupNum = "-1";
|
||||||
buttonType = "PushButton";
|
buttonType = "PushButton";
|
||||||
useMouseEvents = "0";
|
useMouseEvents = "0";
|
||||||
position = "4 19";
|
position = "321 1";
|
||||||
extent = "20 20";
|
extent = "15 15";
|
||||||
minExtent = "8 2";
|
minExtent = "8 2";
|
||||||
horizSizing = "right";
|
horizSizing = "left";
|
||||||
vertSizing = "bottom";
|
vertSizing = "bottom";
|
||||||
profile = "ToolsGuiDefaultProfile";
|
profile = "ToolsGuiSolidDefaultProfile";
|
||||||
visible = "1";
|
visible = "1";
|
||||||
active = "1";
|
active = "1";
|
||||||
command = "AssetBrowser.toggleTagFilterPopup();";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
tooltip = "Create New Asset";
|
||||||
hovertime = "1000";
|
hovertime = "1000";
|
||||||
isContainer = "0";
|
isContainer = "0";
|
||||||
canSave = "1";
|
canSave = "1";
|
||||||
canSaveDynamicFields = "0";
|
canSaveDynamicFields = "0";
|
||||||
};
|
};
|
||||||
new GuiTextCtrl() {
|
new GuiBitmapButtonCtrl(AssetBrowser_ToggleFolderPanel) {
|
||||||
text = "Assets";
|
bitmap = "tools/gui/images/iconList.png";
|
||||||
maxLength = "1024";
|
bitmapMode = "Centered";
|
||||||
margin = "0 0 0 0";
|
autoFitExtents = "0";
|
||||||
padding = "0 0 0 0";
|
useModifiers = "0";
|
||||||
anchorTop = "1";
|
useStates = "1";
|
||||||
anchorBottom = "0";
|
masked = "0";
|
||||||
anchorLeft = "1";
|
groupNum = "-1";
|
||||||
anchorRight = "0";
|
buttonType = "PushButton";
|
||||||
position = "5 0";
|
useMouseEvents = "0";
|
||||||
extent = "53 16";
|
position = "1 1";
|
||||||
|
extent = "15 15";
|
||||||
minExtent = "8 2";
|
minExtent = "8 2";
|
||||||
horizSizing = "right";
|
horizSizing = "right";
|
||||||
vertSizing = "bottom";
|
vertSizing = "bottom";
|
||||||
profile = "ToolsGuiDefaultProfile";
|
profile = "ToolsGuiSolidDefaultProfile";
|
||||||
visible = "1";
|
visible = "1";
|
||||||
active = "1";
|
active = "1";
|
||||||
|
command = "AssetBrowser.toggleFolderCollapseButton();";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
tooltip = "Toggles the display of the folders panel";
|
||||||
hovertime = "1000";
|
hovertime = "1000";
|
||||||
isContainer = "1";
|
isContainer = "0";
|
||||||
canSave = "1";
|
canSave = "1";
|
||||||
canSaveDynamicFields = "0";
|
canSaveDynamicFields = "0";
|
||||||
};
|
};
|
||||||
new GuiBitmapButtonCtrl() {
|
new GuiBitmapButtonCtrl(AssetBrowser_FilterOptionsBtn) {
|
||||||
bitmap = "tools/gui/images/delete";
|
bitmap = "tools/gui/images/filter.png";
|
||||||
bitmapMode = "Stretched";
|
bitmapMode = "Stretched";
|
||||||
autoFitExtents = "0";
|
autoFitExtents = "0";
|
||||||
useModifiers = "0";
|
useModifiers = "0";
|
||||||
|
|
@ -700,17 +675,17 @@
|
||||||
groupNum = "-1";
|
groupNum = "-1";
|
||||||
buttonType = "PushButton";
|
buttonType = "PushButton";
|
||||||
useMouseEvents = "0";
|
useMouseEvents = "0";
|
||||||
position = "337 22";
|
position = "337 1";
|
||||||
extent = "15 15";
|
extent = "15 15";
|
||||||
minExtent = "8 2";
|
minExtent = "8 2";
|
||||||
horizSizing = "left";
|
horizSizing = "left";
|
||||||
vertSizing = "bottom";
|
vertSizing = "bottom";
|
||||||
profile = "ToolsGuiDefaultProfile";
|
profile = "ToolsGuiSolidDefaultProfile";
|
||||||
visible = "1";
|
visible = "1";
|
||||||
active = "1";
|
active = "1";
|
||||||
command = "AssetBrowser.showDeleteDialog();";
|
command = "AssetBrowser.showFilterOptions();";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
tooltip = "Delete Asset";
|
tooltip = "Filter Options";
|
||||||
hovertime = "1000";
|
hovertime = "1000";
|
||||||
isContainer = "0";
|
isContainer = "0";
|
||||||
canSave = "1";
|
canSave = "1";
|
||||||
|
|
@ -724,12 +699,12 @@
|
||||||
anchorBottom = "0";
|
anchorBottom = "0";
|
||||||
anchorLeft = "1";
|
anchorLeft = "1";
|
||||||
anchorRight = "1";
|
anchorRight = "1";
|
||||||
position = "1 40";
|
position = "1 17";
|
||||||
extent = "354 468";
|
extent = "354 487";
|
||||||
minExtent = "8 2";
|
minExtent = "8 2";
|
||||||
horizSizing = "width";
|
horizSizing = "width";
|
||||||
vertSizing = "height";
|
vertSizing = "height";
|
||||||
profile = "ToolsGuiDefaultProfile";
|
profile = "ToolsGuiSolidDefaultProfile";
|
||||||
visible = "1";
|
visible = "1";
|
||||||
active = "1";
|
active = "1";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
|
@ -755,19 +730,35 @@
|
||||||
anchorLeft = "1";
|
anchorLeft = "1";
|
||||||
anchorRight = "0";
|
anchorRight = "0";
|
||||||
position = "0 0";
|
position = "0 0";
|
||||||
extent = "354 448";
|
extent = "354 467";
|
||||||
minExtent = "8 8";
|
minExtent = "8 8";
|
||||||
horizSizing = "width";
|
horizSizing = "width";
|
||||||
vertSizing = "height";
|
vertSizing = "height";
|
||||||
profile = "GuiEditorScrollProfile";
|
profile = "GuiEditorScrollProfile";
|
||||||
visible = "1";
|
visible = "1";
|
||||||
active = "1";
|
active = "1";
|
||||||
tooltipProfile = "ToolsGuiDefaultProfile";
|
tooltipProfile = "ToolsGuiSolidDefaultProfile";
|
||||||
hovertime = "1000";
|
hovertime = "1000";
|
||||||
isContainer = "1";
|
isContainer = "1";
|
||||||
canSave = "1";
|
canSave = "1";
|
||||||
canSaveDynamicFields = "0";
|
canSaveDynamicFields = "0";
|
||||||
|
|
||||||
|
new GuiMouseEventCtrl(AssetListPanelInputs) {
|
||||||
|
lockMouse = "0";
|
||||||
|
position = "1 0";
|
||||||
|
extent = "339 467";
|
||||||
|
minExtent = "8 2";
|
||||||
|
horizSizing = "width";
|
||||||
|
vertSizing = "height";
|
||||||
|
profile = "GuiDefaultProfile";
|
||||||
|
visible = "1";
|
||||||
|
active = "1";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
hovertime = "1000";
|
||||||
|
isContainer = "0";
|
||||||
|
canSave = "1";
|
||||||
|
canSaveDynamicFields = "0";
|
||||||
|
};
|
||||||
new GuiStackControl() {
|
new GuiStackControl() {
|
||||||
stackingType = "Vertical";
|
stackingType = "Vertical";
|
||||||
horizStacking = "Left to Right";
|
horizStacking = "Left to Right";
|
||||||
|
|
@ -778,8 +769,8 @@
|
||||||
dynamicPos = "0";
|
dynamicPos = "0";
|
||||||
changeChildSizeToFit = "1";
|
changeChildSizeToFit = "1";
|
||||||
changeChildPosition = "0";
|
changeChildPosition = "0";
|
||||||
position = "1 1";
|
position = "2 1";
|
||||||
extent = "352 254";
|
extent = "339 124";
|
||||||
minExtent = "16 16";
|
minExtent = "16 16";
|
||||||
horizSizing = "width";
|
horizSizing = "width";
|
||||||
vertSizing = "bottom";
|
vertSizing = "bottom";
|
||||||
|
|
@ -792,25 +783,10 @@
|
||||||
canSave = "1";
|
canSave = "1";
|
||||||
canSaveDynamicFields = "0";
|
canSaveDynamicFields = "0";
|
||||||
|
|
||||||
new GuiControl() {
|
|
||||||
position = "0 0";
|
|
||||||
extent = "352 4";
|
|
||||||
minExtent = "8 2";
|
|
||||||
horizSizing = "right";
|
|
||||||
vertSizing = "bottom";
|
|
||||||
profile = "ToolsGuiDefaultProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "1";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
new GuiDynamicCtrlArrayControl() {
|
new GuiDynamicCtrlArrayControl() {
|
||||||
colCount = "3";
|
colCount = "3";
|
||||||
colSize = "100";
|
colSize = "100";
|
||||||
rowCount = "2";
|
rowCount = "1";
|
||||||
rowSize = "124";
|
rowSize = "124";
|
||||||
rowSpacing = "2";
|
rowSpacing = "2";
|
||||||
colSpacing = "2";
|
colSpacing = "2";
|
||||||
|
|
@ -819,8 +795,8 @@
|
||||||
fillRowFirst = "1";
|
fillRowFirst = "1";
|
||||||
dynamicSize = "1";
|
dynamicSize = "1";
|
||||||
padding = "0 0 0 0";
|
padding = "0 0 0 0";
|
||||||
position = "3 4";
|
position = "3 0";
|
||||||
extent = "352 250";
|
extent = "339 124";
|
||||||
minExtent = "8 8";
|
minExtent = "8 8";
|
||||||
horizSizing = "width";
|
horizSizing = "width";
|
||||||
vertSizing = "bottom";
|
vertSizing = "bottom";
|
||||||
|
|
@ -830,7 +806,7 @@
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
hovertime = "1000";
|
hovertime = "1000";
|
||||||
isContainer = "1";
|
isContainer = "1";
|
||||||
internalName = "materialSelection";
|
internalName = "assetList";
|
||||||
canSave = "1";
|
canSave = "1";
|
||||||
canSaveDynamicFields = "0";
|
canSaveDynamicFields = "0";
|
||||||
};
|
};
|
||||||
|
|
@ -844,12 +820,12 @@
|
||||||
anchorBottom = "0";
|
anchorBottom = "0";
|
||||||
anchorLeft = "1";
|
anchorLeft = "1";
|
||||||
anchorRight = "0";
|
anchorRight = "0";
|
||||||
position = "0 448";
|
position = "0 467";
|
||||||
extent = "354 20";
|
extent = "354 20";
|
||||||
minExtent = "8 2";
|
minExtent = "8 2";
|
||||||
horizSizing = "width";
|
horizSizing = "width";
|
||||||
vertSizing = "height";
|
vertSizing = "height";
|
||||||
profile = "ToolsGuiDefaultProfile";
|
profile = "ToolsGuiSolidDefaultProfile";
|
||||||
visible = "1";
|
visible = "1";
|
||||||
active = "1";
|
active = "1";
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
|
@ -859,13 +835,35 @@
|
||||||
canSave = "1";
|
canSave = "1";
|
||||||
canSaveDynamicFields = "0";
|
canSaveDynamicFields = "0";
|
||||||
};
|
};
|
||||||
|
new GuiTextCtrl(AssetBrowser_FooterText) {
|
||||||
|
maxLength = "1024";
|
||||||
|
margin = "0 0 0 0";
|
||||||
|
padding = "0 0 0 0";
|
||||||
|
anchorTop = "1";
|
||||||
|
anchorBottom = "0";
|
||||||
|
anchorLeft = "1";
|
||||||
|
anchorRight = "0";
|
||||||
|
position = "0 470";
|
||||||
|
extent = "269 23";
|
||||||
|
minExtent = "8 2";
|
||||||
|
horizSizing = "right";
|
||||||
|
vertSizing = "top";
|
||||||
|
profile = "ToolsGuiTextProfile";
|
||||||
|
visible = "1";
|
||||||
|
active = "1";
|
||||||
|
tooltipProfile = "GuiToolTipProfile";
|
||||||
|
hovertime = "1000";
|
||||||
|
isContainer = "1";
|
||||||
|
canSave = "1";
|
||||||
|
canSaveDynamicFields = "0";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
new GuiButtonCtrl() {
|
new GuiButtonCtrl() {
|
||||||
text = "Select";
|
text = "Select";
|
||||||
groupNum = "-1";
|
groupNum = "-1";
|
||||||
buttonType = "PushButton";
|
buttonType = "PushButton";
|
||||||
useMouseEvents = "0";
|
useMouseEvents = "0";
|
||||||
position = "242 491";
|
position = "301 488";
|
||||||
extent = "53 19";
|
extent = "53 19";
|
||||||
minExtent = "8 2";
|
minExtent = "8 2";
|
||||||
horizSizing = "left";
|
horizSizing = "left";
|
||||||
|
|
@ -882,26 +880,6 @@
|
||||||
canSave = "1";
|
canSave = "1";
|
||||||
canSaveDynamicFields = "0";
|
canSaveDynamicFields = "0";
|
||||||
};
|
};
|
||||||
new GuiButtonCtrl() {
|
|
||||||
text = "Cancel";
|
|
||||||
groupNum = "-1";
|
|
||||||
buttonType = "PushButton";
|
|
||||||
useMouseEvents = "0";
|
|
||||||
position = "300 491";
|
|
||||||
extent = "52 19";
|
|
||||||
minExtent = "8 2";
|
|
||||||
horizSizing = "left";
|
|
||||||
vertSizing = "top";
|
|
||||||
profile = "ToolsGuiButtonProfile";
|
|
||||||
visible = "1";
|
|
||||||
active = "1";
|
|
||||||
command = "AssetBrowser.hideDialog();";
|
|
||||||
tooltipProfile = "GuiToolTipProfile";
|
|
||||||
hovertime = "1000";
|
|
||||||
isContainer = "0";
|
|
||||||
canSave = "1";
|
|
||||||
canSaveDynamicFields = "0";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -224,7 +224,7 @@
|
||||||
canSave = "1";
|
canSave = "1";
|
||||||
canSaveDynamicFields = "0";
|
canSaveDynamicFields = "0";
|
||||||
};
|
};
|
||||||
new GuiScrollCtrl() {
|
new GuiScrollCtrl(ImportAssetConfigEditorScroll) {
|
||||||
willFirstRespond = "1";
|
willFirstRespond = "1";
|
||||||
hScrollBar = "dynamic";
|
hScrollBar = "dynamic";
|
||||||
vScrollBar = "dynamic";
|
vScrollBar = "dynamic";
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,32 @@ function initializeAssetBrowser()
|
||||||
{
|
{
|
||||||
echo(" % - Initializing Asset Browser");
|
echo(" % - Initializing Asset Browser");
|
||||||
|
|
||||||
|
$AssetBrowser::importConfigsFile = "tools/assetBrowser/assetImportConfigs.xml";
|
||||||
|
$AssetBrowser::currentImportConfig = "";
|
||||||
|
|
||||||
|
if(!isObject(AssetFilterTypeList))
|
||||||
|
{
|
||||||
|
new ArrayObject(AssetFilterTypeList);
|
||||||
|
|
||||||
|
AssetFilterTypeList.add("Component");
|
||||||
|
AssetFilterTypeList.add("Cpp");
|
||||||
|
AssetFilterTypeList.add("Cubemap");
|
||||||
|
AssetFilterTypeList.add("GameObjects");
|
||||||
|
AssetFilterTypeList.add("GUIs");
|
||||||
|
AssetFilterTypeList.add("Images");
|
||||||
|
AssetFilterTypeList.add("Levels");
|
||||||
|
AssetFilterTypeList.add("Materials");
|
||||||
|
AssetFilterTypeList.add("Particles");
|
||||||
|
AssetFilterTypeList.add("PostFXs");
|
||||||
|
AssetFilterTypeList.add("Scripts");
|
||||||
|
AssetFilterTypeList.add("Shapes");
|
||||||
|
AssetFilterTypeList.add("ShapeAnimations");
|
||||||
|
AssetFilterTypeList.add("Sounds");
|
||||||
|
AssetFilterTypeList.add("StateMachines");
|
||||||
|
AssetFilterTypeList.add("Terrain");
|
||||||
|
AssetFilterTypeList.add("TerrainMaterials");
|
||||||
|
}
|
||||||
|
|
||||||
exec("./guis/assetBrowser.gui");
|
exec("./guis/assetBrowser.gui");
|
||||||
exec("./guis/addModuleWindow.gui");
|
exec("./guis/addModuleWindow.gui");
|
||||||
exec("./guis/gameObjectCreator.gui");
|
exec("./guis/gameObjectCreator.gui");
|
||||||
|
|
@ -67,6 +93,9 @@ function initializeAssetBrowser()
|
||||||
exec("./scripts/assetTypes/sound.cs");
|
exec("./scripts/assetTypes/sound.cs");
|
||||||
exec("./scripts/assetTypes/stateMachine.cs");
|
exec("./scripts/assetTypes/stateMachine.cs");
|
||||||
exec("./scripts/assetTypes/cubemap.cs");
|
exec("./scripts/assetTypes/cubemap.cs");
|
||||||
|
exec("./scripts/assetTypes/folder.cs");
|
||||||
|
exec("./scripts/assetTypes/terrain.cs");
|
||||||
|
exec("./scripts/assetTypes/terrainMaterial.cs");
|
||||||
|
|
||||||
exec("./scripts/fieldTypes/fieldTypes.cs");
|
exec("./scripts/fieldTypes/fieldTypes.cs");
|
||||||
exec("./scripts/fieldTypes/listField.cs");
|
exec("./scripts/fieldTypes/listField.cs");
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -85,6 +85,7 @@ function AssetBrowser::onBeginDropFiles( %this )
|
||||||
//prep the import control
|
//prep the import control
|
||||||
Canvas.pushDialog(AssetImportCtrl);
|
Canvas.pushDialog(AssetImportCtrl);
|
||||||
AssetImportCtrl.setHidden(true);
|
AssetImportCtrl.setHidden(true);
|
||||||
|
|
||||||
ImportAssetTree.clear();
|
ImportAssetTree.clear();
|
||||||
ImportAssetTree.insertItem(0, "Importing Assets");
|
ImportAssetTree.insertItem(0, "Importing Assets");
|
||||||
AssetBrowser.unprocessedAssetsCount = 0;
|
AssetBrowser.unprocessedAssetsCount = 0;
|
||||||
|
|
@ -161,136 +162,39 @@ function AssetBrowser::onDropZipFile(%this, %filePath)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function AssetBrowser::onDropImageFile(%this, %filePath)
|
|
||||||
{
|
|
||||||
if(!%this.isVisible())
|
|
||||||
return;
|
|
||||||
|
|
||||||
// File Information madness
|
|
||||||
%fileName = %filePath;
|
|
||||||
%fileOnlyName = fileName( %fileName );
|
|
||||||
%fileBase = validateDatablockName(fileBase( %fileName ) @ "ImageMap");
|
|
||||||
|
|
||||||
// [neo, 5/17/2007 - #3117]
|
|
||||||
// Check if the file being dropped is already in data/images or a sub dir by checking if
|
|
||||||
// the file path up to length of check path is the same as check path.
|
|
||||||
%defaultPath = EditorSettings.value( "WorldEditor/defaultMaterialsPath" );
|
|
||||||
|
|
||||||
%checkPath = expandFilename( "^"@%defaultPath );
|
|
||||||
%fileOnlyPath = expandFileName( %filePath ); //filePath( expandFileName( %filePath ) );
|
|
||||||
%fileBasePath = getSubStr( %fileOnlyPath, 0, strlen( %checkPath ) );
|
|
||||||
|
|
||||||
if( %checkPath !$= %fileBasePath )
|
|
||||||
{
|
|
||||||
// No match so file is from outside images directory and we need to copy it in
|
|
||||||
%fileNewLocation = expandFilename("^"@%defaultPath) @ "/" @ fileBase( %fileName ) @ fileExt( %fileName );
|
|
||||||
|
|
||||||
// Move to final location
|
|
||||||
if( !pathCopy( %filePath, %fileNewLocation ) )
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Already in images path somewhere so just link to it
|
|
||||||
%fileNewLocation = %filePath;
|
|
||||||
}
|
|
||||||
|
|
||||||
addResPath( filePath( %fileNewLocation ) );
|
|
||||||
|
|
||||||
%matName = fileBase( %fileName );
|
|
||||||
|
|
||||||
// Create Material
|
|
||||||
%imap = new Material(%matName)
|
|
||||||
{
|
|
||||||
mapTo = fileBase( %matName );
|
|
||||||
diffuseMap[0] = %defaultPath @ "/" @ fileBase( %fileName ) @ fileExt( %fileName );
|
|
||||||
};
|
|
||||||
//%imap.setName( %fileBase );
|
|
||||||
//%imap.imageName = %fileNewLocation;
|
|
||||||
//%imap.imageMode = "FULL";
|
|
||||||
//%imap.filterPad = false;
|
|
||||||
//%imap.compile();
|
|
||||||
|
|
||||||
%diffusecheck = %imap.diffuseMap[0];
|
|
||||||
|
|
||||||
// Bad Creation!
|
|
||||||
if( !isObject( %imap ) )
|
|
||||||
return;
|
|
||||||
|
|
||||||
%this.addDatablock( %fileBase, false );
|
|
||||||
}
|
|
||||||
|
|
||||||
function AssetBrowser::onDropSoundFile(%this, %filePath)
|
|
||||||
{
|
|
||||||
if(!%this.isVisible())
|
|
||||||
return;
|
|
||||||
|
|
||||||
// File Information madness
|
|
||||||
%fileName = %filePath;
|
|
||||||
%fileOnlyName = fileName( %fileName );
|
|
||||||
%fileBase = validateDatablockName(fileBase( %fileName ) @ "ImageMap");
|
|
||||||
|
|
||||||
// [neo, 5/17/2007 - #3117]
|
|
||||||
// Check if the file being dropped is already in data/images or a sub dir by checking if
|
|
||||||
// the file path up to length of check path is the same as check path.
|
|
||||||
%defaultPath = EditorSettings.value( "WorldEditor/defaultMaterialsPath" );
|
|
||||||
|
|
||||||
%checkPath = expandFilename( "^"@%defaultPath );
|
|
||||||
%fileOnlyPath = expandFileName( %filePath ); //filePath( expandFileName( %filePath ) );
|
|
||||||
%fileBasePath = getSubStr( %fileOnlyPath, 0, strlen( %checkPath ) );
|
|
||||||
|
|
||||||
if( %checkPath !$= %fileBasePath )
|
|
||||||
{
|
|
||||||
// No match so file is from outside images directory and we need to copy it in
|
|
||||||
%fileNewLocation = expandFilename("^"@%defaultPath) @ "/" @ fileBase( %fileName ) @ fileExt( %fileName );
|
|
||||||
|
|
||||||
// Move to final location
|
|
||||||
if( !pathCopy( %filePath, %fileNewLocation ) )
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Already in images path somewhere so just link to it
|
|
||||||
%fileNewLocation = %filePath;
|
|
||||||
}
|
|
||||||
|
|
||||||
addResPath( filePath( %fileNewLocation ) );
|
|
||||||
|
|
||||||
%matName = fileBase( %fileName );
|
|
||||||
|
|
||||||
// Create Material
|
|
||||||
%imap = new Material(%matName)
|
|
||||||
{
|
|
||||||
mapTo = fileBase( %matName );
|
|
||||||
diffuseMap[0] = %defaultPath @ "/" @ fileBase( %fileName ) @ fileExt( %fileName );
|
|
||||||
};
|
|
||||||
//%imap.setName( %fileBase );
|
|
||||||
//%imap.imageName = %fileNewLocation;
|
|
||||||
//%imap.imageMode = "FULL";
|
|
||||||
//%imap.filterPad = false;
|
|
||||||
//%imap.compile();
|
|
||||||
|
|
||||||
%diffusecheck = %imap.diffuseMap[0];
|
|
||||||
|
|
||||||
// Bad Creation!
|
|
||||||
if( !isObject( %imap ) )
|
|
||||||
return;
|
|
||||||
|
|
||||||
%this.addDatablock( %fileBase, false );
|
|
||||||
}
|
|
||||||
|
|
||||||
function AssetBrowser::onEndDropFiles( %this )
|
function AssetBrowser::onEndDropFiles( %this )
|
||||||
{
|
{
|
||||||
if(!%this.isVisible())
|
if(!%this.isVisible())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//we have assets to import, so go ahead and display the window for that now
|
|
||||||
AssetImportCtrl.setHidden(false);
|
|
||||||
ImportAssetWindow.visible = true;
|
|
||||||
//ImportAssetWindow.validateAssets();
|
|
||||||
ImportAssetWindow.refresh();
|
ImportAssetWindow.refresh();
|
||||||
ImportAssetWindow.selectWindow();
|
|
||||||
|
|
||||||
|
%hasIssues = ImportAssetWindow.validateAssets();
|
||||||
|
|
||||||
|
//If we have a valid config file set and we've set to auto-import, and we have no
|
||||||
|
//issues for importing, then go ahead and run the import immediately, don't
|
||||||
|
//bother showing the window.
|
||||||
|
//If any of these conditions fail, we'll display the import window so it can be handled
|
||||||
|
//by the user
|
||||||
|
if(ImportAssetWindow.importConfigsList.count() != 0 &&
|
||||||
|
EditorSettings.value("Assets/AssetImporDefaultConfig") !$= "" &&
|
||||||
|
EditorSettings.value("Assets/AutoImport", false) == true
|
||||||
|
&& %hasIssues == false)
|
||||||
|
{
|
||||||
|
AssetImportCtrl.setHidden(true);
|
||||||
|
ImportAssetWindow.visible = false;
|
||||||
|
|
||||||
|
//Go ahead and check if we have any issues, and if not, run the import!
|
||||||
|
ImportAssetWindow.ImportAssets();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//we have assets to import, so go ahead and display the window for that now
|
||||||
|
AssetImportCtrl.setHidden(false);
|
||||||
|
ImportAssetWindow.visible = true;
|
||||||
|
ImportAssetWindow.selectWindow();
|
||||||
|
}
|
||||||
|
|
||||||
// Update object library
|
// Update object library
|
||||||
GuiFormManager::SendContentMessage($LBCreateSiderBar, %this, "refreshAll 1");
|
GuiFormManager::SendContentMessage($LBCreateSiderBar, %this, "refreshAll 1");
|
||||||
|
|
||||||
|
|
@ -503,9 +407,6 @@ function ImportAssetWindow::onWake(%this)
|
||||||
//Lets refresh our list
|
//Lets refresh our list
|
||||||
if(!ImportAssetWindow.isVisible())
|
if(!ImportAssetWindow.isVisible())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
$AssetBrowser::importConfigsFile = "tools/assetBrowser/assetImportConfigs.xml";
|
|
||||||
$AssetBrowser::currentImportConfig = "";
|
|
||||||
|
|
||||||
if(!isObject(AssetImportSettings))
|
if(!isObject(AssetImportSettings))
|
||||||
{
|
{
|
||||||
|
|
@ -526,7 +427,11 @@ function ImportAssetWindow::onWake(%this)
|
||||||
|
|
||||||
function ImportAssetWindow::reloadImportOptionConfigs(%this)
|
function ImportAssetWindow::reloadImportOptionConfigs(%this)
|
||||||
{
|
{
|
||||||
ImportAssetWindow.importConfigsList = new ArrayObject();
|
if(!isObject(ImportAssetWindow.importConfigsList))
|
||||||
|
ImportAssetWindow.importConfigsList = new ArrayObject();
|
||||||
|
else
|
||||||
|
ImportAssetWindow.importConfigsList.empty();
|
||||||
|
|
||||||
ImportAssetConfigList.clear();
|
ImportAssetConfigList.clear();
|
||||||
|
|
||||||
%xmlDoc = new SimXMLDocument();
|
%xmlDoc = new SimXMLDocument();
|
||||||
|
|
@ -1168,10 +1073,12 @@ function ImportAssetWindow::validateAssets(%this)
|
||||||
//Clear any status
|
//Clear any status
|
||||||
%this.resetAssetsValidationStatus();
|
%this.resetAssetsValidationStatus();
|
||||||
|
|
||||||
|
ImportAssetWindow.importIssues = false;
|
||||||
|
|
||||||
%id = ImportAssetTree.getChild(1);
|
%id = ImportAssetTree.getChild(1);
|
||||||
%hasIssues = %this.validateAsset(%id);
|
%hasIssues = %this.validateAsset(%id);
|
||||||
|
|
||||||
if(%hasIssues)
|
if(ImportAssetWindow.importIssues == false)
|
||||||
return false;
|
return false;
|
||||||
else
|
else
|
||||||
return true;
|
return true;
|
||||||
|
|
@ -1179,6 +1086,7 @@ function ImportAssetWindow::validateAssets(%this)
|
||||||
|
|
||||||
function ImportAssetWindow::validateAsset(%this, %id)
|
function ImportAssetWindow::validateAsset(%this, %id)
|
||||||
{
|
{
|
||||||
|
|
||||||
%moduleName = ImportAssetModuleList.getText();
|
%moduleName = ImportAssetModuleList.getText();
|
||||||
|
|
||||||
while (%id > 0)
|
while (%id > 0)
|
||||||
|
|
@ -1229,21 +1137,17 @@ function ImportAssetWindow::validateAsset(%this, %id)
|
||||||
{
|
{
|
||||||
%foundCollision = true;
|
%foundCollision = true;
|
||||||
|
|
||||||
%assetItem.status = "Warning";
|
%assetItem.status = "error";
|
||||||
%assetItem.statusType = "DuplicateAsset";
|
%assetItem.statusType = "DuplicateAsset";
|
||||||
%assetItem.statusInfo = "Duplicate asset names found with the target module!\nAsset \"" @
|
%assetItem.statusInfo = "Duplicate asset names found with the target module!\nAsset \"" @
|
||||||
%assetItem.assetName @ "\" of type \"" @ %assetItem.assetType @ "\" has a matching name.\nPlease rename it and try again!";
|
%assetItem.assetName @ "\" of type \"" @ %assetItem.assetType @ "\" has a matching name.\nPlease rename it and try again!";
|
||||||
|
|
||||||
//Clean up our queries
|
|
||||||
%assetQuery.delete();
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(%foundCollision == true)
|
if(%foundCollision == true)
|
||||||
{
|
{
|
||||||
%hasIssues = true;
|
|
||||||
|
|
||||||
//yup, a collision, prompt for the change and bail out
|
//yup, a collision, prompt for the change and bail out
|
||||||
/*MessageBoxOK( "Error!", "Duplicate asset names found with the target module!\nAsset \"" @
|
/*MessageBoxOK( "Error!", "Duplicate asset names found with the target module!\nAsset \"" @
|
||||||
%assetItemA.assetName @ "\" of type \"" @ %assetItemA.assetType @ "\" has a matching name.\nPlease rename it and try again!");*/
|
%assetItemA.assetName @ "\" of type \"" @ %assetItemA.assetType @ "\" has a matching name.\nPlease rename it and try again!");*/
|
||||||
|
|
@ -1259,7 +1163,6 @@ function ImportAssetWindow::validateAsset(%this, %id)
|
||||||
//Check if we were given a file path(so not generated) but somehow isn't a valid file
|
//Check if we were given a file path(so not generated) but somehow isn't a valid file
|
||||||
if(%assetItem.filePath !$= "" && !%assetItem.generatedAsset && !isFile(%assetItem.filePath))
|
if(%assetItem.filePath !$= "" && !%assetItem.generatedAsset && !isFile(%assetItem.filePath))
|
||||||
{
|
{
|
||||||
%hasIssues = true;
|
|
||||||
%assetItem.status = "error";
|
%assetItem.status = "error";
|
||||||
%assetItem.statusType = "MissingFile";
|
%assetItem.statusType = "MissingFile";
|
||||||
%assetItem.statusInfo = "Unable to find file to be imported. Please select asset file.";
|
%assetItem.statusInfo = "Unable to find file to be imported. Please select asset file.";
|
||||||
|
|
@ -1273,6 +1176,9 @@ function ImportAssetWindow::validateAsset(%this, %id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(%assetItem.status $= "error")
|
||||||
|
ImportAssetWindow.importIssues = true;
|
||||||
|
|
||||||
if(ImportAssetTree.isParentItem(%id))
|
if(ImportAssetTree.isParentItem(%id))
|
||||||
{
|
{
|
||||||
%childItem = ImportAssetTree.getChild(%id);
|
%childItem = ImportAssetTree.getChild(%id);
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,9 @@ function ImportAssetConfigList::onSelect( %this, %id, %text )
|
||||||
ImportAssetWindow.activeImportConfigIndex = %id;
|
ImportAssetWindow.activeImportConfigIndex = %id;
|
||||||
ImportAssetWindow.activeImportConfig = ImportAssetWindow.importConfigsList.getKey(%id);
|
ImportAssetWindow.activeImportConfig = ImportAssetWindow.importConfigsList.getKey(%id);
|
||||||
|
|
||||||
AssetBrowser.reloadImportingFiles();
|
//If we were trying to import anything, refresh it with the new config
|
||||||
|
if( AssetBrowser.importingFilesArray.count() != 0)
|
||||||
|
AssetBrowser.reloadImportingFiles();
|
||||||
}
|
}
|
||||||
|
|
||||||
function setupImportConfigSettingsList()
|
function setupImportConfigSettingsList()
|
||||||
|
|
@ -428,8 +430,9 @@ function ImportOptionsConfigList::changeEditorSetting(%this, %varName, %value)
|
||||||
|
|
||||||
if(%oldValue !$= %value)
|
if(%oldValue !$= %value)
|
||||||
{
|
{
|
||||||
%id = %this.getSelectedRow();
|
%scollPos = ImportAssetConfigEditorScroll.getScrollPosition();
|
||||||
%this.setSelectedRow(%id);
|
ImportAssetConfigEditorWindow.populateConfigList(ImportAssetWindow.activeImportConfig);
|
||||||
|
ImportAssetConfigEditorScroll.setScrollPosition(%scollPos.x, %scollPos.y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,7 @@ function AssetBrowser::duplicateComponentAsset(%this, %assetId)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function AssetBrowser::renameGameObjectAsset(%this, %assetDef, %newAssetId, %originalName, %newName)
|
function AssetBrowser::renameComponentAsset(%this, %assetDef, %newAssetId, %originalName, %newName)
|
||||||
{
|
{
|
||||||
%assetPath = AssetDatabase.getAssetFilePath(%newAssetId);
|
%assetPath = AssetDatabase.getAssetFilePath(%newAssetId);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,95 @@
|
||||||
|
function AssetBrowser::buildFolderPreview(%this, %assetDef, %previewData)
|
||||||
|
{
|
||||||
|
%previewData.assetName = %assetDef.assetName;
|
||||||
|
%previewData.assetPath = %assetDef.dirPath;
|
||||||
|
|
||||||
|
//%previewData.previewImage = "tools/assetBrowser/art/folderIcon";
|
||||||
|
%previewData.previewImage = "tools/gui/images/folder";
|
||||||
|
|
||||||
|
//%previewData.assetFriendlyName = %assetDef.assetName;
|
||||||
|
%previewData.assetDesc = %assetDef.description;
|
||||||
|
%previewData.tooltip = %assetDef.dirPath;
|
||||||
|
%previewData.doubleClickCommand = "AssetBrowser.navigateTo(\""@ %assetDef.dirPath @ "/" @ %assetDef.assetName @"\")";//browseTo %assetDef.dirPath / %assetDef.assetName
|
||||||
|
}
|
||||||
|
|
||||||
|
function AssetBrowser::renameFolder(%this, %folderPath, %newFolderName)
|
||||||
|
{
|
||||||
|
%fullPath = makeFullPath(%folderPath);
|
||||||
|
%newFullPath = makeFullPath(%folderPath);
|
||||||
|
|
||||||
|
%fullPath = strreplace(%fullPath, "//", "/");
|
||||||
|
|
||||||
|
%count = getTokenCount(%fullPath, "/");
|
||||||
|
%basePath = getTokens(%fullPath, "/", 0, %count-2);
|
||||||
|
%oldName = getToken(%fullPath, "/", %count-1);
|
||||||
|
|
||||||
|
//We need to ensure that no files are 'active' while we try and clean up behind ourselves with the delete action
|
||||||
|
//so, we nix any assets active for the module, do the delete action on the old folder, and then re-acquire our assets.
|
||||||
|
//This will have the added benefit of updating paths for asset items
|
||||||
|
|
||||||
|
%module = AssetBrowser.getModuleFromAddress(AssetBrowser.currentAddress);
|
||||||
|
%moduleId = %module.ModuleId;
|
||||||
|
|
||||||
|
AssetDatabase.removeDeclaredAssets(%moduleId);
|
||||||
|
|
||||||
|
%copiedSuccess = pathCopy(%fullPath, %basePath @ "/" @ %newFolderName);
|
||||||
|
%this.deleteFolder(%fullPath);
|
||||||
|
|
||||||
|
AssetDatabase.addModuleDeclaredAssets(%moduleId);
|
||||||
|
}
|
||||||
|
|
||||||
|
function AssetBrowser::deleteFolder(%this, %folderPath)
|
||||||
|
{
|
||||||
|
doDeleteFolder(%folderPath);
|
||||||
|
|
||||||
|
%this.loadFilters();
|
||||||
|
}
|
||||||
|
|
||||||
|
function doDeleteFolder(%folderPath)
|
||||||
|
{
|
||||||
|
%fullPath = makeFullPath(%folderPath);
|
||||||
|
|
||||||
|
//First, wipe out any files inside the folder first
|
||||||
|
%file = findFirstFileMultiExpr( %fullPath @ "/*.*", true);
|
||||||
|
|
||||||
|
while( %file !$= "" )
|
||||||
|
{
|
||||||
|
%success = fileDelete( %file );
|
||||||
|
|
||||||
|
if(!%success)
|
||||||
|
{
|
||||||
|
error("doDeleteFolder - unable to delete file " @ %file);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
%file = findNextFileMultiExpr( %fullPath @ "/*.*" );
|
||||||
|
}
|
||||||
|
|
||||||
|
//next, walk through and delete any subfolders that may be remaining
|
||||||
|
while(fileDelete(%fullPath) == 0)
|
||||||
|
{
|
||||||
|
//We couldn't delete the folder, so get a directory list and recurse through it, deleteing them as we go
|
||||||
|
%paths = getDirectoryList(%fullPath);
|
||||||
|
for(%i=0; %i < getFieldCount(%paths); %i++)
|
||||||
|
{
|
||||||
|
%childPath = getField(%paths, %i);
|
||||||
|
doDeleteFolder(%fullPath @ "/" @ %childPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function AssetBrowser::moveFolder(%this, %folderPath, %newFolderPath)
|
||||||
|
{
|
||||||
|
%fullPath = makeFullPath(%folderPath);
|
||||||
|
%newFullPath = makeFullPath(%newFolderPath);
|
||||||
|
|
||||||
|
%fullPath = strreplace(%fullPath, "//", "/");
|
||||||
|
%newFullPath = strreplace(%newFullPath, "//", "/");
|
||||||
|
|
||||||
|
%count = getTokenCount(%fullPath, "/");
|
||||||
|
%basePath = getTokens(%fullPath, "/", 0, %count-2);
|
||||||
|
%oldName = getToken(%fullPath, "/", %count-1);
|
||||||
|
|
||||||
|
%copiedSuccess = pathCopy(%fullPath, %newFullPath @ "/" @ %newFolderName);
|
||||||
|
%this.deleteFolder(%fullPath);
|
||||||
|
}
|
||||||
|
|
@ -5,9 +5,11 @@ function AssetBrowser::createGUIAsset(%this)
|
||||||
|
|
||||||
%assetName = AssetBrowser.newAssetSettings.assetName;
|
%assetName = AssetBrowser.newAssetSettings.assetName;
|
||||||
|
|
||||||
%tamlpath = %modulePath @ "/GUIs/" @ %assetName @ ".asset.taml";
|
%assetPath = AssetBrowser.currentAddress @ "/";
|
||||||
%guipath = %modulePath @ "/GUIs/" @ %assetName @ ".gui";
|
|
||||||
%scriptPath = %modulePath @ "/GUIs/" @ %assetName @ ".cs";
|
%tamlpath = %assetPath @ %assetName @ ".asset.taml";
|
||||||
|
%guipath = %assetPath @ %assetName @ ".gui";
|
||||||
|
%scriptPath = %assetPath @ %assetName @ ".cs";
|
||||||
|
|
||||||
%asset = new GUIAsset()
|
%asset = new GUIAsset()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@ function AssetBrowser::importImageAsset(%this, %assetItem)
|
||||||
%assetImportSuccessful = false;
|
%assetImportSuccessful = false;
|
||||||
%assetId = %moduleName@":"@%assetName;
|
%assetId = %moduleName@":"@%assetName;
|
||||||
|
|
||||||
%assetPath = "data/" @ %moduleName @ "/Images";
|
%assetPath = AssetBrowser.currentAddress @ "/";
|
||||||
%assetFullPath = %assetPath @ "/" @ fileName(%filePath);
|
%assetFullPath = %assetPath @ "/" @ fileName(%filePath);
|
||||||
|
|
||||||
%newAsset = new ImageAsset()
|
%newAsset = new ImageAsset()
|
||||||
|
|
|
||||||
|
|
@ -5,14 +5,20 @@ function AssetBrowser::createLevelAsset(%this)
|
||||||
|
|
||||||
%assetName = AssetBrowser.newAssetSettings.assetName;
|
%assetName = AssetBrowser.newAssetSettings.assetName;
|
||||||
|
|
||||||
%tamlpath = %modulePath @ "/levels/" @ %assetName @ ".asset.taml";
|
%assetPath = AssetBrowser.currentAddress @ "/";
|
||||||
%levelPath = %modulePath @ "/levels/" @ %assetName @ ".mis";
|
|
||||||
|
%tamlpath = %assetPath @ %assetName @ ".asset.taml";
|
||||||
|
%levelPath = %assetPath @ %assetName @ ".mis";
|
||||||
|
|
||||||
%asset = new LevelAsset()
|
%asset = new LevelAsset()
|
||||||
{
|
{
|
||||||
AssetName = %assetName;
|
AssetName = %assetName;
|
||||||
versionId = 1;
|
versionId = 1;
|
||||||
LevelFile = %assetName @ ".mis";
|
LevelFile = %assetName @ ".mis";
|
||||||
|
DecalsFile = %assetName @ ".mis.decals";
|
||||||
|
PostFXPresetFile = %assetName @ ".postfxpreset.cs";
|
||||||
|
ForestFile = %assetName @ ".forest";
|
||||||
|
NavmeshFile = %assetName @ ".nav";
|
||||||
LevelName = AssetBrowser.newAssetSettings.levelName;
|
LevelName = AssetBrowser.newAssetSettings.levelName;
|
||||||
AssetDescription = AssetBrowser.newAssetSettings.description;
|
AssetDescription = AssetBrowser.newAssetSettings.description;
|
||||||
PreviewImage = AssetBrowser.newAssetSettings.levelPreviewImage;
|
PreviewImage = AssetBrowser.newAssetSettings.levelPreviewImage;
|
||||||
|
|
@ -24,6 +30,10 @@ function AssetBrowser::createLevelAsset(%this)
|
||||||
{
|
{
|
||||||
echo("Unable to copy template level file!");
|
echo("Unable to copy template level file!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Generate the associated files
|
||||||
|
DecalManagerSave( %assetPath @ %asset.DecalsFile );
|
||||||
|
PostFXManager::savePresetHandler( %assetPath @ %asset.PostFXPresetFile );
|
||||||
|
|
||||||
%moduleDef = ModuleDatabase.findModule(%moduleName, 1);
|
%moduleDef = ModuleDatabase.findModule(%moduleName, 1);
|
||||||
AssetDatabase.addDeclaredAsset(%moduleDef, %tamlpath);
|
AssetDatabase.addDeclaredAsset(%moduleDef, %tamlpath);
|
||||||
|
|
|
||||||
|
|
@ -278,10 +278,10 @@ function AssetBrowser::importMaterialAsset(%this, %assetItem)
|
||||||
%assetImportSuccessful = false;
|
%assetImportSuccessful = false;
|
||||||
%assetId = %moduleName@":"@%assetName;
|
%assetId = %moduleName@":"@%assetName;
|
||||||
|
|
||||||
%assetPath = "data/" @ %moduleName @ "/materials";
|
%assetPath = AssetBrowser.currentAddress @ "/";
|
||||||
%tamlpath = %assetPath @ "/" @ %assetName @ ".asset.taml";
|
%tamlpath = %assetPath @ %assetName @ ".asset.taml";
|
||||||
%sgfPath = %assetPath @ "/" @ %assetName @ ".sgf";
|
%sgfPath = %assetPath @ %assetName @ ".sgf";
|
||||||
%scriptPath = %assetPath @ "/" @ %assetName @ ".cs";
|
%scriptPath = %assetPath @ %assetName @ ".cs";
|
||||||
|
|
||||||
%newAsset = new MaterialAsset()
|
%newAsset = new MaterialAsset()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,12 @@ function AssetBrowser::createScriptAsset(%this)
|
||||||
%moduleName = AssetBrowser.newAssetSettings.moduleName;
|
%moduleName = AssetBrowser.newAssetSettings.moduleName;
|
||||||
%modulePath = "data/" @ %moduleName;
|
%modulePath = "data/" @ %moduleName;
|
||||||
|
|
||||||
%assetName = AssetBrowser.newAssetSettings.assetName;
|
%assetName = AssetBrowser.newAssetSettings.assetName;
|
||||||
|
|
||||||
%tamlpath = %modulePath @ "/scripts/" @ %assetName @ ".asset.taml";
|
%assetPath = AssetBrowser.currentAddress @ "/";
|
||||||
%scriptPath = %modulePath @ "/scripts/" @ %assetName @ ".cs";
|
|
||||||
|
%tamlpath = %assetPath @ %assetName @ ".asset.taml";
|
||||||
|
%scriptPath = %assetPath @ %assetName @ ".cs";
|
||||||
|
|
||||||
%asset = new ScriptAsset()
|
%asset = new ScriptAsset()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,10 @@ function AssetBrowser::createShapeAsset(%this)
|
||||||
|
|
||||||
%assetName = AssetBrowser.newAssetSettings.assetName;
|
%assetName = AssetBrowser.newAssetSettings.assetName;
|
||||||
|
|
||||||
%tamlpath = %modulePath @ "/shapes/" @ %assetName @ ".asset.taml";
|
%assetPath = AssetBrowser.currentAddress @ "/";
|
||||||
%shapeFilePath = %modulePath @ "/shapes/" @ %assetName @ ".dae";
|
|
||||||
|
%tamlpath = %assetPath @ %assetName @ ".asset.taml";
|
||||||
|
%shapeFilePath = %assetPath @ %assetName @ ".dae";
|
||||||
|
|
||||||
%asset = new ShapeAsset()
|
%asset = new ShapeAsset()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,38 @@
|
||||||
function AssetBrowser::createTerrainAsset(%this)
|
function AssetBrowser::createTerrainAsset(%this)
|
||||||
{
|
{
|
||||||
|
%moduleName = AssetBrowser.newAssetSettings.moduleName;
|
||||||
|
%modulePath = "data/" @ %moduleName;
|
||||||
|
|
||||||
|
%assetName = AssetBrowser.newAssetSettings.assetName;
|
||||||
|
|
||||||
|
%assetType = AssetBrowser.newAssetSettings.assetType;
|
||||||
|
%assetPath = AssetBrowser.currentAddress @ "/";
|
||||||
|
|
||||||
|
%tamlpath = %assetPath @ %assetName @ ".asset.taml";
|
||||||
|
%terPath = %assetPath @ %assetName @ ".ter";
|
||||||
|
|
||||||
|
%asset = new TerrainAsset()
|
||||||
|
{
|
||||||
|
AssetName = %assetName;
|
||||||
|
versionId = 1;
|
||||||
|
terrainFile = %assetName @ ".ter";
|
||||||
|
};
|
||||||
|
|
||||||
|
TamlWrite(%asset, %tamlpath);
|
||||||
|
|
||||||
|
%moduleDef = ModuleDatabase.findModule(%moduleName, 1);
|
||||||
|
AssetDatabase.addDeclaredAsset(%moduleDef, %tamlpath);
|
||||||
|
|
||||||
|
AssetBrowser.loadFilters();
|
||||||
|
|
||||||
|
AssetBrowserFilterTree.onSelect(%smItem);
|
||||||
|
|
||||||
|
//Save out a basic terrain block here
|
||||||
|
%terrBlock = new TerrainBlock() { terrainFile = %terPath; };
|
||||||
|
%terrBlock.save(%terPath);
|
||||||
|
%terrBlock.delete();
|
||||||
|
|
||||||
|
return %tamlpath;
|
||||||
}
|
}
|
||||||
|
|
||||||
function AssetBrowser::editTerrainAsset(%this, %assetDef)
|
function AssetBrowser::editTerrainAsset(%this, %assetDef)
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,70 @@
|
||||||
function AssetBrowser::createTerrainMaterialAsset(%this)
|
function AssetBrowser::createTerrainMaterialAsset(%this)
|
||||||
{
|
{
|
||||||
|
%moduleName = AssetBrowser.newAssetSettings.moduleName;
|
||||||
|
%modulePath = "data/" @ %moduleName;
|
||||||
|
|
||||||
|
%assetName = AssetBrowser.newAssetSettings.assetName;
|
||||||
|
|
||||||
|
%assetType = AssetBrowser.newAssetSettings.assetType;
|
||||||
|
%assetPath = AssetBrowser.currentAddress @ "/";
|
||||||
|
|
||||||
|
%tamlpath = %assetPath @ %assetName @ ".asset.taml";
|
||||||
|
%scriptPath = %assetPath @ %assetName @ ".cs";
|
||||||
|
|
||||||
|
%asset = new TerrainMaterialAsset()
|
||||||
|
{
|
||||||
|
AssetName = %assetName;
|
||||||
|
versionId = 1;
|
||||||
|
scriptFile = %assetName @ ".cs";
|
||||||
|
materialDefinitionName = %assetName;
|
||||||
|
};
|
||||||
|
|
||||||
|
TamlWrite(%asset, %tamlpath);
|
||||||
|
|
||||||
|
%moduleDef = ModuleDatabase.findModule(%moduleName, 1);
|
||||||
|
AssetDatabase.addDeclaredAsset(%moduleDef, %tamlpath);
|
||||||
|
|
||||||
|
AssetBrowser.loadFilters();
|
||||||
|
|
||||||
|
AssetBrowserFilterTree.onSelect(%smItem);
|
||||||
|
|
||||||
|
%file = new FileObject();
|
||||||
|
%templateFile = new FileObject();
|
||||||
|
|
||||||
|
%templateFilePath = %this.templateFilesPath @ "terrainMaterial.cs.template";
|
||||||
|
|
||||||
|
if(%file.openForWrite(%scriptPath) && %templateFile.openForRead(%templateFilePath))
|
||||||
|
{
|
||||||
|
while( !%templateFile.isEOF() )
|
||||||
|
{
|
||||||
|
%line = %templateFile.readline();
|
||||||
|
%line = strreplace( %line, "@", %assetName );
|
||||||
|
|
||||||
|
%file.writeline(%line);
|
||||||
|
//echo(%line);
|
||||||
|
}
|
||||||
|
|
||||||
|
%file.close();
|
||||||
|
%templateFile.close();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
%file.close();
|
||||||
|
%templateFile.close();
|
||||||
|
|
||||||
|
warnf("CreateNewTerrainMaterialAsset - Something went wrong and we couldn't write thescript file!");
|
||||||
|
}
|
||||||
|
|
||||||
|
//If we've got the terrain mat editor open, go ahead and update it all
|
||||||
|
TerrainMaterialDlg.onWake();
|
||||||
|
|
||||||
|
return %tamlpath;
|
||||||
}
|
}
|
||||||
|
|
||||||
function AssetBrowser::editTerrainMaterialAsset(%this, %assetDef)
|
function AssetBrowser::editTerrainMaterialAsset(%this, %assetDef)
|
||||||
{
|
{
|
||||||
|
TerrainMaterialDlg.show(0, 0, 0);
|
||||||
|
TerrainMaterialDlg.setActiveMaterial(%assetDef.assetName);
|
||||||
}
|
}
|
||||||
|
|
||||||
function AssetBrowser::duplicateTerrainMaterialAsset(%this, %assetDef, %targetModule)
|
function AssetBrowser::duplicateTerrainMaterialAsset(%this, %assetDef, %targetModule)
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,7 @@ function AssetBrowser::refreshAsset(%this, %assetId)
|
||||||
function AssetBrowser::renameAsset(%this)
|
function AssetBrowser::renameAsset(%this)
|
||||||
{
|
{
|
||||||
//Find out what type it is
|
//Find out what type it is
|
||||||
%assetDef = AssetDatabase.acquireAsset(EditAssetPopup.assetId);
|
//%assetDef = AssetDatabase.acquireAsset(EditAssetPopup.assetId);
|
||||||
|
|
||||||
%curFirstResponder = AssetBrowser.getFirstResponder();
|
%curFirstResponder = AssetBrowser.getFirstResponder();
|
||||||
|
|
||||||
|
|
@ -92,36 +92,56 @@ function AssetBrowser::performRenameAsset(%this, %originalAssetName, %newName)
|
||||||
//if the name is different to the asset's original name, rename it!
|
//if the name is different to the asset's original name, rename it!
|
||||||
if(%originalAssetName !$= %newName)
|
if(%originalAssetName !$= %newName)
|
||||||
{
|
{
|
||||||
%moduleName = AssetBrowser.selectedModule;
|
if(EditAssetPopup.assetType !$= "Folder")
|
||||||
|
|
||||||
//do a rename!
|
|
||||||
%success = AssetDatabase.renameDeclaredAsset(%moduleName @ ":" @ %originalAssetName, %moduleName @ ":" @ %newName);
|
|
||||||
|
|
||||||
if(%success)
|
|
||||||
echo("AssetBrowser - renaming of asset " @ %moduleName @ ":" @ %originalAssetName @ " to " @ %moduleName @ ":" @ %newName @ " was a success.");
|
|
||||||
else
|
|
||||||
echo("AssetBrowser - renaming of asset " @ %moduleName @ ":" @ %originalAssetName @ " to " @ %moduleName @ ":" @ %newName @ " was a failure.");
|
|
||||||
|
|
||||||
if(%success)
|
|
||||||
{
|
{
|
||||||
%newAssetId = %moduleName @ ":" @ %newName;
|
%moduleName = AssetBrowser.selectedModule;
|
||||||
%assetPath = AssetDatabase.getAssetFilePath(%newAssetId);
|
|
||||||
|
|
||||||
//Rename any associated files as well
|
//do a rename!
|
||||||
%assetDef = AssetDatabase.acquireAsset(%newAssetId);
|
%success = AssetDatabase.renameDeclaredAsset(%moduleName @ ":" @ %originalAssetName, %moduleName @ ":" @ %newName);
|
||||||
%assetType = %assetDef.getClassName();
|
|
||||||
|
|
||||||
//rename the file to match
|
if(%success)
|
||||||
%path = filePath(%assetPath);
|
echo("AssetBrowser - renaming of asset " @ %moduleName @ ":" @ %originalAssetName @ " to " @ %moduleName @ ":" @ %newName @ " was a success.");
|
||||||
|
else
|
||||||
|
echo("AssetBrowser - renaming of asset " @ %moduleName @ ":" @ %originalAssetName @ " to " @ %moduleName @ ":" @ %newName @ " was a failure.");
|
||||||
|
|
||||||
//Do the rename command
|
if(%success)
|
||||||
%buildCommand = %this @ ".rename" @ %assetType @ "(" @ %assetDef @ "," @ %newAssetId @ ");";
|
{
|
||||||
eval(%buildCommand);
|
%newAssetId = %moduleName @ ":" @ %newName;
|
||||||
|
%assetPath = AssetDatabase.getAssetFilePath(%newAssetId);
|
||||||
|
|
||||||
|
//Rename any associated files as well
|
||||||
|
%assetDef = AssetDatabase.acquireAsset(%newAssetId);
|
||||||
|
%assetType = %assetDef.getClassName();
|
||||||
|
|
||||||
|
//rename the file to match
|
||||||
|
%path = filePath(%assetPath);
|
||||||
|
|
||||||
|
//Do the rename command
|
||||||
|
%buildCommand = %this @ ".rename" @ %assetType @ "(" @ %assetDef @ "," @ %newAssetId @ ");";
|
||||||
|
eval(%buildCommand);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
%buildCommand = %this @ ".renameFolder(\"" @ EditAssetPopup.assetId @ "\",\"" @ %newName @ "\");";
|
||||||
|
eval(%buildCommand);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Make sure everything is refreshed
|
//Make sure everything is refreshed
|
||||||
AssetBrowser.loadFilters();
|
AssetBrowser.loadFilters();
|
||||||
|
|
||||||
|
//Update the selection to immediately jump to the new asset
|
||||||
|
AssetBrowser-->filterTree.clearSelection();
|
||||||
|
%ModuleItem = AssetBrowser-->filterTree.findItemByName(%moduleName);
|
||||||
|
%assetTypeId = AssetBrowser-->filterTree.findChildItemByName(%ModuleItem, %assetType);
|
||||||
|
|
||||||
|
AssetBrowser-->filterTree.selectItem(%assetTypeId);
|
||||||
|
|
||||||
|
%selectedItem = AssetBrowser-->filterTree.getSelectedItem();
|
||||||
|
AssetBrowser-->filterTree.scrollVisibleByObjectId(%selectedItem);
|
||||||
|
|
||||||
|
AssetBrowser-->filterTree.buildVisibleTree();
|
||||||
}
|
}
|
||||||
|
|
||||||
function AssetNameField::onReturn(%this)
|
function AssetNameField::onReturn(%this)
|
||||||
|
|
@ -132,6 +152,26 @@ function AssetNameField::onReturn(%this)
|
||||||
AssetBrowser.performRenameAsset(%this.originalAssetName, %this.getText());
|
AssetBrowser.performRenameAsset(%this.originalAssetName, %this.getText());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//------------------------------------------------------------
|
||||||
|
function AssetBrowser::moveAsset(%this, %destination)
|
||||||
|
{
|
||||||
|
if(EditAssetPopup.assetType $= "Folder")
|
||||||
|
{
|
||||||
|
//Do any cleanup required given the type
|
||||||
|
if(%this.isMethod("moveFolder"))
|
||||||
|
eval(%this @ ".moveFolder("@EditAssetPopup.assetId@",\""@%destination@"\");");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
%assetDef = AssetDatabase.acquireAsset(EditAssetPopup.assetId);
|
||||||
|
%assetType = AssetDatabase.getAssetType(EditAssetPopup.assetType);
|
||||||
|
|
||||||
|
//Do any cleanup required given the type
|
||||||
|
if(%this.isMethod("move"@%assetType))
|
||||||
|
eval(%this @ ".move"@%assetType@"("@%assetDef@");");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------
|
//------------------------------------------------------------
|
||||||
|
|
||||||
function AssetBrowser::duplicateAsset(%this, %targetModule)
|
function AssetBrowser::duplicateAsset(%this, %targetModule)
|
||||||
|
|
@ -157,10 +197,10 @@ function AssetBrowser::duplicateAsset(%this, %targetModule)
|
||||||
function AssetBrowser::deleteAsset(%this)
|
function AssetBrowser::deleteAsset(%this)
|
||||||
{
|
{
|
||||||
//Find out what type it is
|
//Find out what type it is
|
||||||
%assetDef = AssetDatabase.acquireAsset(EditAssetPopup.assetId);
|
//%assetDef = AssetDatabase.acquireAsset(EditAssetPopup.assetId);
|
||||||
%assetType = %assetDef.getClassName();
|
//%assetType = %assetDef.getClassName();
|
||||||
|
|
||||||
MessageBoxOKCancel("Warning!", "This will delete the selected asset and the files associated to it, do you wish to continue?",
|
MessageBoxOKCancel("Warning!", "This will delete the selected content and the files associated to it, do you wish to continue?",
|
||||||
"AssetBrowser.confirmDeleteAsset();", "");
|
"AssetBrowser.confirmDeleteAsset();", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -169,14 +209,23 @@ function AssetBrowser::confirmDeleteAsset(%this)
|
||||||
%currentSelectedItem = AssetBrowserFilterTree.getSelectedItem();
|
%currentSelectedItem = AssetBrowserFilterTree.getSelectedItem();
|
||||||
%currentItemParent = AssetBrowserFilterTree.getParentItem(%currentSelectedItem);
|
%currentItemParent = AssetBrowserFilterTree.getParentItem(%currentSelectedItem);
|
||||||
|
|
||||||
%assetDef = AssetDatabase.acquireAsset(EditAssetPopup.assetId);
|
if(EditAssetPopup.assetType $= "Folder")
|
||||||
%assetType = AssetDatabase.getAssetType(EditAssetPopup.assetId);
|
{
|
||||||
|
//Do any cleanup required given the type
|
||||||
//Do any cleanup required given the type
|
if(%this.isMethod("deleteFolder"))
|
||||||
if(%this.isMethod("delete"@%assetType))
|
eval(%this @ ".deleteFolder(\""@EditAssetPopup.assetId@"\");");
|
||||||
eval(%this @ ".delete"@%assetType@"("@%assetDef@");");
|
}
|
||||||
|
else
|
||||||
AssetDatabase.deleteAsset(EditAssetPopup.assetId, false);
|
{
|
||||||
|
%assetDef = AssetDatabase.acquireAsset(EditAssetPopup.assetId);
|
||||||
|
%assetType = AssetDatabase.getAssetType(EditAssetPopup.assetType);
|
||||||
|
|
||||||
|
//Do any cleanup required given the type
|
||||||
|
if(%this.isMethod("delete"@%assetType))
|
||||||
|
eval(%this @ ".delete"@%assetType@"("@%assetDef@");");
|
||||||
|
|
||||||
|
AssetDatabase.deleteAsset(EditAssetPopup.assetId, false);
|
||||||
|
}
|
||||||
|
|
||||||
%this.loadFilters();
|
%this.loadFilters();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -191,6 +191,18 @@ function CreateNewAsset()
|
||||||
%callbackCommand = "" @ AssetBrowser_newAsset.callbackFunc @ "(\"" @ %moduleName @ ":" @ %assetName @ "\");";
|
%callbackCommand = "" @ AssetBrowser_newAsset.callbackFunc @ "(\"" @ %moduleName @ ":" @ %assetName @ "\");";
|
||||||
eval(%callbackCommand);
|
eval(%callbackCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Update the selection to immediately jump to the new asset
|
||||||
|
AssetBrowser-->filterTree.clearSelection();
|
||||||
|
%ModuleItem = AssetBrowser-->filterTree.findItemByName(%moduleName);
|
||||||
|
%assetTypeId = AssetBrowser-->filterTree.findChildItemByName(%ModuleItem, %assetType);
|
||||||
|
|
||||||
|
AssetBrowser-->filterTree.selectItem(%assetTypeId);
|
||||||
|
|
||||||
|
%selectedItem = AssetBrowser-->filterTree.getSelectedItem();
|
||||||
|
AssetBrowser-->filterTree.scrollVisibleByObjectId(%selectedItem);
|
||||||
|
|
||||||
|
AssetBrowser-->filterTree.buildVisibleTree();
|
||||||
}
|
}
|
||||||
|
|
||||||
function ParentComponentList::onWake(%this)
|
function ParentComponentList::onWake(%this)
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,8 @@ function AssetBrowser::buildPopupMenus(%this)
|
||||||
|
|
||||||
AddNewModulePopup.enableItem(1, false);
|
AddNewModulePopup.enableItem(1, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if( !isObject( EditAssetPopup ) )
|
if( !isObject( EditAssetPopup ) )
|
||||||
{
|
{
|
||||||
new PopupMenu( EditAssetPopup )
|
new PopupMenu( EditAssetPopup )
|
||||||
|
|
@ -55,9 +56,9 @@ function AssetBrowser::buildPopupMenus(%this)
|
||||||
item[ 5 ] = "-";
|
item[ 5 ] = "-";
|
||||||
Item[ 6 ] = "Duplicate Asset" TAB "" TAB "AssetBrowser.duplicateAsset();";
|
Item[ 6 ] = "Duplicate Asset" TAB "" TAB "AssetBrowser.duplicateAsset();";
|
||||||
item[ 7 ] = "-";
|
item[ 7 ] = "-";
|
||||||
item[ 8 ] = "Re-Import Asset" TAB "" TAB "AssetBrowser.reImportAsset();";
|
//item[ 8 ] = "Re-Import Asset" TAB "" TAB "AssetBrowser.reImportAsset();";
|
||||||
item[ 9 ] = "-";
|
//item[ 9 ] = "-";
|
||||||
item[ 10 ] = "Delete Asset" TAB "" TAB "AssetBrowser.deleteAsset();";
|
item[ 8 ] = "Delete Asset" TAB "" TAB "AssetBrowser.deleteAsset();";
|
||||||
|
|
||||||
jumpFileName = "";
|
jumpFileName = "";
|
||||||
jumpLineNumber = "";
|
jumpLineNumber = "";
|
||||||
|
|
@ -105,20 +106,23 @@ function AssetBrowser::buildPopupMenus(%this)
|
||||||
//isPopup = true;
|
//isPopup = true;
|
||||||
|
|
||||||
item[ 0 ] = "Create Material" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"MaterialAsset\", AssetBrowser.selectedModule);";//"createNewMaterialAsset(\"NewMaterial\", AssetBrowser.selectedModule);";
|
item[ 0 ] = "Create Material" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"MaterialAsset\", AssetBrowser.selectedModule);";//"createNewMaterialAsset(\"NewMaterial\", AssetBrowser.selectedModule);";
|
||||||
item[ 1 ] = "Create Image" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"ImageAsset\", AssetBrowser.selectedModule);";//"AssetBrowser.createNewImageAsset(\"NewImage\", AssetBrowser.selectedModule);";
|
item[ 1 ] = "Create Terrain Material" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"TerrainMaterialAsset\", AssetBrowser.selectedModule);";//"AssetBrowser.createNewImageAsset(\"NewImage\", AssetBrowser.selectedModule);";
|
||||||
item[ 2 ] = "-";
|
item[ 2 ] = "Create Image" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"ImageAsset\", AssetBrowser.selectedModule);";//"AssetBrowser.createNewImageAsset(\"NewImage\", AssetBrowser.selectedModule);";
|
||||||
item[ 3 ] = "Create Shape" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"Shape\", AssetBrowser.selectedModule);";
|
item[ 3 ] = "-";
|
||||||
item[ 4 ] = "Create Shape Animation" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"ShapeAnimationAsset\", AssetBrowser.selectedModule);";//"AssetBrowser.createNewShapeAnimationAsset(\"NewShapeAnimation\", AssetBrowser.selectedModule);";
|
item[ 4 ] = "Create Terrain Data" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"TerrainAsset\", AssetBrowser.selectedModule);";
|
||||||
item[ 5 ] = "-";
|
item[ 5 ] = "-";
|
||||||
item[ 6 ] = "Create GUI" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"GUIAsset\", AssetBrowser.selectedModule);";//"AssetBrowser.createNewGUIAsset(\"NewGUI\", AssetBrowser.selectedModule);";
|
item[ 6 ] = "Create Shape" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"Shape\", AssetBrowser.selectedModule);";
|
||||||
item[ 7 ] = "-";
|
item[ 7 ] = "Create Shape Animation" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"ShapeAnimationAsset\", AssetBrowser.selectedModule);";//"AssetBrowser.createNewShapeAnimationAsset(\"NewShapeAnimation\", AssetBrowser.selectedModule);";
|
||||||
item[ 8 ] = "Create Post Effect" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"PostEffectAsset\", AssetBrowser.selectedModule);";//"AssetBrowser.createNewPostEffectAsset(\"NewPostEffect\", AssetBrowser.selectedModule);";
|
item[ 8 ] = "-";
|
||||||
item[ 9 ] = "-";
|
item[ 9 ] = "Create GUI" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"GUIAsset\", AssetBrowser.selectedModule);";//"AssetBrowser.createNewGUIAsset(\"NewGUI\", AssetBrowser.selectedModule);";
|
||||||
item[ 10 ] = "Create Sound" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"SoundAsset\", AssetBrowser.selectedModule);";//"AssetBrowser.createNewSoundAsset(\"NewSound\", AssetBrowser.selectedModule);";
|
item[ 10 ] = "-";
|
||||||
item[ 11 ] = "-";
|
item[ 11 ] = "Create Post Effect" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"PostEffectAsset\", AssetBrowser.selectedModule);";//"AssetBrowser.createNewPostEffectAsset(\"NewPostEffect\", AssetBrowser.selectedModule);";
|
||||||
item[ 12 ] = "Create Particle Effect" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"ParticleEffectAsset\", AssetBrowser.selectedModule);";//"AssetBrowser.createNewParticleEffectAsset(\"NewParticleEffect\", AssetBrowser.selectedModule);";
|
item[ 12 ] = "-";
|
||||||
item[ 13 ] = "-";
|
item[ 13 ] = "Create Sound" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"SoundAsset\", AssetBrowser.selectedModule);";//"AssetBrowser.createNewSoundAsset(\"NewSound\", AssetBrowser.selectedModule);";
|
||||||
item[ 14 ] = "Create Cubemap" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"CubemapAsset\", AssetBrowser.selectedModule);";
|
item[ 14 ] = "-";
|
||||||
|
item[ 15 ] = "Create Particle Effect" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"ParticleEffectAsset\", AssetBrowser.selectedModule);";//"AssetBrowser.createNewParticleEffectAsset(\"NewParticleEffect\", AssetBrowser.selectedModule);";
|
||||||
|
item[ 16 ] = "-";
|
||||||
|
item[ 17 ] = "Create Cubemap" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"CubemapAsset\", AssetBrowser.selectedModule);";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -148,15 +152,17 @@ function AssetBrowser::buildPopupMenus(%this)
|
||||||
superClass = "MenuBuilder";
|
superClass = "MenuBuilder";
|
||||||
class = "EditorWorldMenu";
|
class = "EditorWorldMenu";
|
||||||
|
|
||||||
item[0] = "Create Code Asset" TAB AddNewScriptAssetPopup;
|
item[0] = "Create Folder" TAB "" TAB "AssetBrowser.CreateNewFolder();";
|
||||||
item[1] = "-";
|
item[1] = "-";
|
||||||
item[2] = "Create Art Asset" TAB AddNewArtAssetPopup;
|
item[2] = "Create Code Asset" TAB AddNewScriptAssetPopup;
|
||||||
item[3] = "-";
|
item[3] = "-";
|
||||||
item[4] = "Create Level" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"LevelAsset\", AssetBrowser.selectedModule);";//"AssetBrowser.createNewLevelAsset(\"NewLevel\", AssetBrowser.selectedModule);";
|
item[4] = "Create Art Asset" TAB AddNewArtAssetPopup;
|
||||||
item[5] = "-";
|
item[5] = "-";
|
||||||
item[6] = "Create C++ Asset" TAB AddNewCppAssetPopup;
|
item[6] = "Create Level" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"LevelAsset\", AssetBrowser.selectedModule);";//"AssetBrowser.createNewLevelAsset(\"NewLevel\", AssetBrowser.selectedModule);";
|
||||||
item[7] = "-";
|
item[7] = "-";
|
||||||
item[8] = "Create New Module" TAB "" TAB "AssetBrowser.CreateNewModule();";
|
item[8] = "Create C++ Asset" TAB AddNewCppAssetPopup;
|
||||||
|
item[9] = "-";
|
||||||
|
item[10] = "Create New Module" TAB "" TAB "AssetBrowser.CreateNewModule();";
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
@ -181,10 +187,27 @@ function AssetBrowser::buildPopupMenus(%this)
|
||||||
}
|
}
|
||||||
|
|
||||||
//Some assets are not yet ready/implemented, so disable their creation here
|
//Some assets are not yet ready/implemented, so disable their creation here
|
||||||
AddNewArtAssetPopup.enableItem(3, false); //shape
|
AddNewArtAssetPopup.enableItem(6, false); //shape
|
||||||
AddNewArtAssetPopup.enableItem(4, false); //shape animation
|
AddNewArtAssetPopup.enableItem(7, false); //shape animation
|
||||||
AddNewArtAssetPopup.enableItem(10, false); //sound asset
|
AddNewArtAssetPopup.enableItem(13, false); //sound asset
|
||||||
AddNewArtAssetPopup.enableItem(12, false); //particle effect
|
AddNewArtAssetPopup.enableItem(15, false); //particle effect
|
||||||
|
|
||||||
|
if( !isObject( EditFolderPopup ) )
|
||||||
|
{
|
||||||
|
new PopupMenu( EditFolderPopup )
|
||||||
|
{
|
||||||
|
superClass = "MenuBuilder";
|
||||||
|
class = "EditorWorldMenu";
|
||||||
|
//isPopup = true;
|
||||||
|
|
||||||
|
Item[ 0 ] = "Create in Folder" TAB AddNewAssetPopup;
|
||||||
|
item[ 1 ] = "-";
|
||||||
|
item[ 2 ] = "Rename Folder" TAB "" TAB "AssetBrowser.renameAsset();";
|
||||||
|
Item[ 3 ] = "Duplicate Folder" TAB "" TAB "AssetBrowser.duplicateAsset();";
|
||||||
|
item[ 4 ] = "-";
|
||||||
|
item[ 5 ] = "Delete Folder" TAB "" TAB "AssetBrowser.deleteAsset();";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
if( !isObject( EditAssetCategoryPopup ) )
|
if( !isObject( EditAssetCategoryPopup ) )
|
||||||
{
|
{
|
||||||
|
|
@ -198,6 +221,38 @@ function AssetBrowser::buildPopupMenus(%this)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Asset Preview size presets
|
||||||
|
if( !isObject( AssetPreviewSizePopup ) )
|
||||||
|
{
|
||||||
|
new PopupMenu( AssetPreviewSizePopup )
|
||||||
|
{
|
||||||
|
superClass = "MenuBuilder";
|
||||||
|
class = "EditorWorldMenu";
|
||||||
|
|
||||||
|
item[ 0 ] = "Small" TAB "" TAB "AssetBrowser.setPreviewSize(\"Small\");";
|
||||||
|
item[ 1 ] = "Medium" TAB "" TAB "AssetBrowser.setPreviewSize(\"Medium\");";
|
||||||
|
Item[ 2 ] = "Large" TAB "" TAB "AssetBrowser.setPreviewSize(\"Large\");";
|
||||||
|
};
|
||||||
|
|
||||||
|
AssetPreviewSizePopup.checkItem(0, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if( !isObject( AssetTypeListPopup ) )
|
||||||
|
{
|
||||||
|
new PopupMenu( AssetTypeListPopup )
|
||||||
|
{
|
||||||
|
superClass = "MenuBuilder";
|
||||||
|
class = "EditorWorldMenu";
|
||||||
|
//isPopup = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*for(%i=0; %i < AssetFilterTypeList.Count(); %i++)
|
||||||
|
{
|
||||||
|
%assetTypeName = AssetFilterTypeList.getKey(%i);
|
||||||
|
AssetTypeListPopup.insertItem(%i, %assetTypeName, "", "AssetBrowser.toggleAssetTypeFilter(" @ %i @ ");");
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
|
||||||
//Browser visibility menu
|
//Browser visibility menu
|
||||||
if( !isObject( BrowserVisibilityPopup ) )
|
if( !isObject( BrowserVisibilityPopup ) )
|
||||||
{
|
{
|
||||||
|
|
@ -208,13 +263,26 @@ function AssetBrowser::buildPopupMenus(%this)
|
||||||
//isPopup = true;
|
//isPopup = true;
|
||||||
|
|
||||||
item[ 0 ] = "Toggle Show Core Modules" TAB "" TAB "AssetBrowser.viewCoreModulesFilter();";
|
item[ 0 ] = "Toggle Show Core Modules" TAB "" TAB "AssetBrowser.viewCoreModulesFilter();";
|
||||||
item[ 1 ] = "Toggle Only Show Modules with Assets" TAB "" TAB "AssetBrowser.viewPopulatedModulesFilter();";
|
item[ 1 ] = "Toggle Show Tools Modules" TAB "" TAB "AssetBrowser.viewToolsModulesFilter();";
|
||||||
Item[ 2 ] = "-";
|
item[ 2 ] = "Toggle Only Show Modules with Assets" TAB "" TAB "AssetBrowser.viewPopulatedModulesFilter();";
|
||||||
item[ 3 ] = "Show Assets as list" TAB "" TAB "AssetBrowser.viewListFilter();";
|
Item[ 3 ] = "-";
|
||||||
Item[ 4 ] = "Show Assets with tags" TAB "" TAB "AssetBrowser.viewTagsFilter();";
|
item[ 4 ] = "Show Folders" TAB "" TAB "AssetBrowser.toggleShowingFolders();";
|
||||||
|
item[ 5 ] = "Show Empty Folders" TAB "" TAB "AssetBrowser.toggleShowingEmptyFolders();";
|
||||||
|
item[ 6 ] = "-";
|
||||||
|
item[ 7 ] = "Filter by Asset Type" TAB AssetTypeListPopup;
|
||||||
|
item[ 8 ] = "-";
|
||||||
|
item[ 9 ] = "Enable Auto-refresh" TAB "" TAB "AssetBrowser.toggleAutorefresh();";
|
||||||
|
Item[ 10 ] = "-";
|
||||||
|
Item[ 11 ] = "Asset Preview Size" TAB AssetPreviewSizePopup;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
BrowserVisibilityPopup.enableItem(5, false);
|
||||||
|
BrowserVisibilityPopup.enableItem(7, false);
|
||||||
|
BrowserVisibilityPopup.enableItem(9, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
//Import Legacy menus
|
//Import Legacy menus
|
||||||
if( !isObject( ImportAssetsPopup ) )
|
if( !isObject( ImportAssetsPopup ) )
|
||||||
{
|
{
|
||||||
|
|
@ -266,6 +334,7 @@ function AssetBrowser::buildPopupMenus(%this)
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function AddNewScriptAssetPopupMenu::onSelectItem(%this, %id, %text)
|
function AddNewScriptAssetPopupMenu::onSelectItem(%this, %id, %text)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
singleton Material(TerrainFX_@)
|
||||||
|
{
|
||||||
|
mapTo = "@";
|
||||||
|
footstepSoundId = 0;
|
||||||
|
terrainMaterials = "1";
|
||||||
|
ShowDust = "1";
|
||||||
|
showFootprints = "1";
|
||||||
|
materialTag0 = "Terrain";
|
||||||
|
effectColor[0] = "0.42 0.42 0 1";
|
||||||
|
effectColor[1] = "0.42 0.42 0 1";
|
||||||
|
impactSoundId = "0";
|
||||||
|
};
|
||||||
|
|
||||||
|
new TerrainMaterial(@)
|
||||||
|
{
|
||||||
|
internalName = "@";
|
||||||
|
diffuseMap = "";
|
||||||
|
detailMap = "";
|
||||||
|
detailSize = "10";
|
||||||
|
isManaged = "1";
|
||||||
|
detailBrightness = "1";
|
||||||
|
Enabled = "1";
|
||||||
|
diffuseSize = "200";
|
||||||
|
};
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 3.8 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 10 KiB |
|
|
@ -20,7 +20,7 @@
|
||||||
minExtent = "8 2";
|
minExtent = "8 2";
|
||||||
horizSizing = "center";
|
horizSizing = "center";
|
||||||
vertSizing = "center";
|
vertSizing = "center";
|
||||||
profile = "ToolsGuiDefaultProfile";
|
profile = "ToolsGuiSolidDefaultProfile";
|
||||||
visible = "1";
|
visible = "1";
|
||||||
active = "1";
|
active = "1";
|
||||||
tooltipProfile = "ToolsGuiToolTipProfile";
|
tooltipProfile = "ToolsGuiToolTipProfile";
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ function ESettingsWindow::startup( %this )
|
||||||
%this.addEditorSettingsPage("ShapeEditor", "Shape Editor");
|
%this.addEditorSettingsPage("ShapeEditor", "Shape Editor");
|
||||||
%this.addEditorSettingsPage("NavEditor", "Navigation Editor");
|
%this.addEditorSettingsPage("NavEditor", "Navigation Editor");
|
||||||
%this.addEditorSettingsPage("Theme", "Theme");
|
%this.addEditorSettingsPage("Theme", "Theme");
|
||||||
|
%this.addEditorSettingsPage("AssetEditing", "Asset Editing");
|
||||||
|
|
||||||
%this.addGameSettingsPage("GameGeneral", "General");
|
%this.addGameSettingsPage("GameGeneral", "General");
|
||||||
%this.addGameSettingsPage("Gameplay", "Gameplay");
|
%this.addGameSettingsPage("Gameplay", "Gameplay");
|
||||||
|
|
@ -185,7 +186,7 @@ function SettingsInspector::changeEditorSetting(%this, %varName, %value)
|
||||||
%success = ProjectSettings.write();
|
%success = ProjectSettings.write();
|
||||||
|
|
||||||
if(%oldValue !$= %value)
|
if(%oldValue !$= %value)
|
||||||
ESettingsWindow.refresh();
|
ESettingsWindow.schedule(15,"refresh");
|
||||||
}
|
}
|
||||||
|
|
||||||
function GuiInspectorVariableGroup::buildOptionsSettingField(%this, %fieldName, %fieldLabel, %fieldDesc, %fieldDefaultVal, %fieldDataVals, %ownerObj)
|
function GuiInspectorVariableGroup::buildOptionsSettingField(%this, %fieldName, %fieldLabel, %fieldDesc, %fieldDefaultVal, %fieldDataVals, %ownerObj)
|
||||||
|
|
@ -292,6 +293,12 @@ function ESettingsWindow::getGeneralSettings(%this)
|
||||||
SettingsInspector.addSettingsField("WorldEditor/Theme/windowTitleFontColor", "Window Title Text Color", "colorI", "");
|
SettingsInspector.addSettingsField("WorldEditor/Theme/windowTitleFontColor", "Window Title Text Color", "colorI", "");
|
||||||
SettingsInspector.addSettingsField("WorldEditor/Theme/mainTextColor", "Main Text Color", "colorI", "");
|
SettingsInspector.addSettingsField("WorldEditor/Theme/mainTextColor", "Main Text Color", "colorI", "");
|
||||||
SettingsInspector.endGroup();
|
SettingsInspector.endGroup();
|
||||||
|
|
||||||
|
SettingsInspector.startGroup("Layout");
|
||||||
|
SettingsInspector.addSettingsField("WorldEditor/Layout/LayoutMode", "Editor Layout Mode", "list", "This dictates which layout style the editor should use." @
|
||||||
|
"WARNING - Modern layout is highlight experimental." @
|
||||||
|
"Updating this requires a restart of the program", "Classic,Modern");
|
||||||
|
SettingsInspector.endGroup();
|
||||||
}
|
}
|
||||||
|
|
||||||
function ESettingsWindow::getCameraSettings(%this)
|
function ESettingsWindow::getCameraSettings(%this)
|
||||||
|
|
@ -380,6 +387,7 @@ function ESettingsWindow::getThemeSettings(%this)
|
||||||
SettingsInspector.addSettingsField("Theme/fieldTextColor", "Field Text Color", "ColorI", "");
|
SettingsInspector.addSettingsField("Theme/fieldTextColor", "Field Text Color", "ColorI", "");
|
||||||
SettingsInspector.addSettingsField("Theme/fieldTextHLColor", "Field Text Highlight Color", "ColorI", "");
|
SettingsInspector.addSettingsField("Theme/fieldTextHLColor", "Field Text Highlight Color", "ColorI", "");
|
||||||
SettingsInspector.addSettingsField("Theme/fieldTextSELColor", "Field Text Selected Color", "ColorI", "");
|
SettingsInspector.addSettingsField("Theme/fieldTextSELColor", "Field Text Selected Color", "ColorI", "");
|
||||||
|
SettingsInspector.addSettingsField("Theme/fieldTextNAColor", "Field Text N/A Color", "ColorI", "");
|
||||||
|
|
||||||
SettingsInspector.addSettingsField("Theme/fieldBGColor", "Field Background Color", "ColorI", "");
|
SettingsInspector.addSettingsField("Theme/fieldBGColor", "Field Background Color", "ColorI", "");
|
||||||
SettingsInspector.addSettingsField("Theme/fieldBGHLColor", "Field Background Highlight Color", "ColorI", "");
|
SettingsInspector.addSettingsField("Theme/fieldBGHLColor", "Field Background Highlight Color", "ColorI", "");
|
||||||
|
|
@ -431,9 +439,38 @@ function ESettingsWindow::getAssetManagementSettings(%this)
|
||||||
SettingsInspector.addSettingsField("AssetManagement/Assets/assetExtension", "Asset Extension", "string", "");
|
SettingsInspector.addSettingsField("AssetManagement/Assets/assetExtension", "Asset Extension", "string", "");
|
||||||
SettingsInspector.addSettingsField("AssetManagement/Assets/datablockCaching", "Cache Datablocks", "bool", "");
|
SettingsInspector.addSettingsField("AssetManagement/Assets/datablockCaching", "Cache Datablocks", "bool", "");
|
||||||
//SettingsInspector.addSettingsField("AssetManagement/Assets/moduleExtension", "Module Extension", "string", "");
|
//SettingsInspector.addSettingsField("AssetManagement/Assets/moduleExtension", "Module Extension", "string", "");
|
||||||
|
|
||||||
SettingsInspector.endGroup();
|
SettingsInspector.endGroup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function ESettingsWindow::getAssetEditingSettings(%this)
|
||||||
|
{
|
||||||
|
ImportAssetWindow::reloadImportOptionConfigs();
|
||||||
|
|
||||||
|
for(%i=0; %i < ImportAssetWindow.importConfigsList.Count(); %i++)
|
||||||
|
{
|
||||||
|
%configName = ImportAssetWindow.importConfigsList.getKey(%i);
|
||||||
|
%formattedConfigList = %i == 0 ? %configName : %formattedConfigList @ "," @ %configName;
|
||||||
|
}
|
||||||
|
|
||||||
|
SettingsInspector.startGroup("Assets Importing");
|
||||||
|
SettingsInspector.addSettingsField("Assets/AssetImporDefaultConfig", "Default Asset Import Config", "list", "", %formattedConfigList);
|
||||||
|
SettingsInspector.addSettingsField("Assets/AutoImport", "Automatically Import using default config", "bool", "If on, the asset importing process" @
|
||||||
|
"will attempt to automatically import any inbound assets"@
|
||||||
|
"using the default config, without prompting the import window."@
|
||||||
|
"The window will still display if any issues are detected", "");
|
||||||
|
SettingsInspector.endGroup();
|
||||||
|
|
||||||
|
SettingsInspector.startGroup("Asset Browser");
|
||||||
|
SettingsInspector.addSettingsField("Assets/Browser/showCoreModule", "Show Core Module in Asset Browser", "bool", "");
|
||||||
|
SettingsInspector.addSettingsField("Assets/Browser/showToolsModule", "Show Tools Module in Asset Browser", "bool", "");
|
||||||
|
SettingsInspector.addSettingsField("Assets/Browser/showOnlyPopulatedModule", "Show Only Modules with Assets in Asset Browser", "bool", "");
|
||||||
|
SettingsInspector.addSettingsField("Assets/Browser/showFolders", "Show Folders in Tiles view in Asset Browser", "bool", "");
|
||||||
|
SettingsInspector.addSettingsField("Assets/Browser/showEmptyFolders", "Show Empty Folders in Tiles view in Asset Browser", "bool", "");
|
||||||
|
SettingsInspector.addSettingsField("Assets/Browser/previewTileSize", "Asset Preview Tile Size", "bool", "");
|
||||||
|
SettingsInspector.endGroup();
|
||||||
|
}
|
||||||
|
|
||||||
function ESettingsWindow::getGameplaySettings(%this)
|
function ESettingsWindow::getGameplaySettings(%this)
|
||||||
{
|
{
|
||||||
SettingsInspector.startGroup("Game Modes");
|
SettingsInspector.startGroup("Game Modes");
|
||||||
|
|
|
||||||
BIN
Templates/BaseGame/game/tools/gui/images/folderDown.png
Normal file
BIN
Templates/BaseGame/game/tools/gui/images/folderDown.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.1 KiB |
BIN
Templates/BaseGame/game/tools/gui/images/rightArrowWhite.png
Normal file
BIN
Templates/BaseGame/game/tools/gui/images/rightArrowWhite.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.3 KiB |
|
|
@ -37,7 +37,7 @@ new GuiControlProfile (ToolsGuiDefaultProfile)
|
||||||
mouseOverSelected = false;
|
mouseOverSelected = false;
|
||||||
|
|
||||||
// fill color
|
// fill color
|
||||||
opaque = true;
|
opaque = false;
|
||||||
fillColor = EditorSettings.value("Theme/tabsColor");
|
fillColor = EditorSettings.value("Theme/tabsColor");
|
||||||
fillColorHL = EditorSettings.value("Theme/tabsGLColor");
|
fillColorHL = EditorSettings.value("Theme/tabsGLColor");
|
||||||
fillColorSEL = EditorSettings.value("Theme/tabsSELColor");
|
fillColorSEL = EditorSettings.value("Theme/tabsSELColor");
|
||||||
|
|
@ -79,7 +79,7 @@ new GuiControlProfile (ToolsGuiDefaultProfile)
|
||||||
};
|
};
|
||||||
|
|
||||||
if( !isObject( ToolsGuiSolidDefaultProfile ) )
|
if( !isObject( ToolsGuiSolidDefaultProfile ) )
|
||||||
new GuiControlProfile (ToolsGuiSolidDefaultProfile)
|
new GuiControlProfile (ToolsGuiSolidDefaultProfile : ToolsGuiDefaultProfile)
|
||||||
{
|
{
|
||||||
opaque = true;
|
opaque = true;
|
||||||
border = true;
|
border = true;
|
||||||
|
|
@ -1109,7 +1109,7 @@ singleton GuiControlProfile( ToolsGuiMenuBarProfile )
|
||||||
fontColor = EditorSettings.value("Theme/headerTextColor");
|
fontColor = EditorSettings.value("Theme/headerTextColor");
|
||||||
fontColorSEL = EditorSettings.value("Theme/fieldTextSELColor");
|
fontColorSEL = EditorSettings.value("Theme/fieldTextSELColor");
|
||||||
fontColorHL = EditorSettings.value("Theme/fieldTextHLColor");
|
fontColorHL = EditorSettings.value("Theme/fieldTextHLColor");
|
||||||
fontColorNA = EditorSettings.value("Theme/fieldTextSELColor");
|
fontColorNA = EditorSettings.value("Theme/fieldTextNAColor");
|
||||||
border = 0;
|
border = 0;
|
||||||
borderThickness = 1;
|
borderThickness = 1;
|
||||||
opaque = true;
|
opaque = true;
|
||||||
|
|
@ -1123,6 +1123,8 @@ singleton GuiControlProfile( ToolsMenubarProfile : ToolsGuiDefaultProfile )
|
||||||
bitmap = "./menubar";
|
bitmap = "./menubar";
|
||||||
category = "Editor";
|
category = "Editor";
|
||||||
|
|
||||||
|
opaque = true;
|
||||||
|
|
||||||
fillColor = EditorSettings.value("Theme/headerColor");
|
fillColor = EditorSettings.value("Theme/headerColor");
|
||||||
fontColor = EditorSettings.value("Theme/headerTextColor");
|
fontColor = EditorSettings.value("Theme/headerTextColor");
|
||||||
fontColorHL = EditorSettings.value("Theme/fieldTextHLColor");
|
fontColorHL = EditorSettings.value("Theme/fieldTextHLColor");
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,193 @@
|
||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||||
<EditorSettings>
|
<EditorSettings>
|
||||||
|
<Group name="MeshRoadEditor">
|
||||||
|
<Setting name="HoverSplineColor">255 0 0 255</Setting>
|
||||||
|
<Setting name="SelectedSplineColor">0 255 0 255</Setting>
|
||||||
|
<Setting name="sideMaterialName">DefaultRoadMaterialOther</Setting>
|
||||||
|
<Setting name="DefaultWidth">10</Setting>
|
||||||
|
<Setting name="topMaterialName">DefaultRoadMaterialTop</Setting>
|
||||||
|
<Setting name="DefaultNormal">0 0 1</Setting>
|
||||||
|
</Group>
|
||||||
|
<Group name="TerrainEditor">
|
||||||
|
<Setting name="currentAction">lowerHeight</Setting>
|
||||||
|
<Group name="ActionValues">
|
||||||
|
<Setting name="softSelectRadius">50</Setting>
|
||||||
|
<Setting name="softSelectDefaultFilter">1.000000 0.833333 0.666667 0.500000 0.333333 0.166667 0.000000</Setting>
|
||||||
|
<Setting name="setHeightVal">100</Setting>
|
||||||
|
<Setting name="scaleVal">1</Setting>
|
||||||
|
<Setting name="softSelectFilter">1.000000 0.833333 0.666667 0.500000 0.333333 0.166667 0.000000</Setting>
|
||||||
|
<Setting name="SlopeMaxAngle">90</Setting>
|
||||||
|
<Setting name="SlopeMinAngle">0</Setting>
|
||||||
|
<Setting name="smoothFactor">0.1</Setting>
|
||||||
|
<Setting name="noiseFactor">1</Setting>
|
||||||
|
<Setting name="adjustHeightVal">10</Setting>
|
||||||
|
</Group>
|
||||||
|
<Group name="Brush">
|
||||||
|
<Setting name="brushSize">40 40</Setting>
|
||||||
|
<Setting name="maxBrushSize">40 40</Setting>
|
||||||
|
<Setting name="brushSoftness">1</Setting>
|
||||||
|
<Setting name="brushPressure">1</Setting>
|
||||||
|
<Setting name="brushType">ellipse</Setting>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
<Group name="Theme">
|
||||||
|
<Setting name="dividerDarkColor">17 16 15 255</Setting>
|
||||||
|
<Setting name="fieldTextHLColor">234 232 230 255</Setting>
|
||||||
|
<Setting name="fieldTextColor">178 175 172 255</Setting>
|
||||||
|
<Setting name="fieldTextSELColor">255 255 255 255</Setting>
|
||||||
|
<Setting name="fieldBGHLColor">72 70 68 255</Setting>
|
||||||
|
<Setting name="dividerMidColor">50 49 48 255</Setting>
|
||||||
|
<Setting name="tooltipBGColor">43 43 43 255</Setting>
|
||||||
|
<Setting name="windowBackgroundColor">32 31 30 255</Setting>
|
||||||
|
<Setting name="fieldBGColor">59 58 57 255</Setting>
|
||||||
|
<Setting name="fieldBGSELColor">100 98 96 255</Setting>
|
||||||
|
<Setting name="tabsColor">37 36 35 255</Setting>
|
||||||
|
<Setting name="tabsHLColor">50 49 48 255</Setting>
|
||||||
|
<Setting name="headerColor">50 49 48 255</Setting>
|
||||||
|
<Setting name="fieldTextNAColor">77 77 77 255</Setting>
|
||||||
|
<Setting name="tooltipTextColor">255 255 255 255</Setting>
|
||||||
|
<Setting name="headerTextColor">236 234 232 255</Setting>
|
||||||
|
<Setting name="tooltipDividerColor">72 70 68 255</Setting>
|
||||||
|
<Setting name="tabsSELColor">59 58 57 255</Setting>
|
||||||
|
<Setting name="dividerLightColor">96 94 92 255</Setting>
|
||||||
|
</Group>
|
||||||
|
<Group name="GuiEditor">
|
||||||
|
<Setting name="lastPath">tools/worldEditor/gui</Setting>
|
||||||
|
<Setting name="previewResolution">1024 768</Setting>
|
||||||
|
<Group name="Library">
|
||||||
|
<Setting name="viewType">Categorized</Setting>
|
||||||
|
</Group>
|
||||||
|
<Group name="Snapping">
|
||||||
|
<Setting name="snapToCanvas">1</Setting>
|
||||||
|
<Setting name="snapToCenters">1</Setting>
|
||||||
|
<Setting name="sensitivity">2</Setting>
|
||||||
|
<Setting name="snap2Grid">0</Setting>
|
||||||
|
<Setting name="snap2GridSize">8</Setting>
|
||||||
|
<Setting name="snapToControls">1</Setting>
|
||||||
|
<Setting name="snapToEdges">1</Setting>
|
||||||
|
<Setting name="snapToGuides">1</Setting>
|
||||||
|
</Group>
|
||||||
|
<Group name="Rendering">
|
||||||
|
<Setting name="drawGuides">1</Setting>
|
||||||
|
<Setting name="drawBorderLines">1</Setting>
|
||||||
|
</Group>
|
||||||
|
<Group name="Help">
|
||||||
|
<Setting name="documentationURL">http://www.garagegames.com/products/torque-3d/documentation/user</Setting>
|
||||||
|
<Setting name="documentationReference">../../../Documentation/Torque 3D - Script Manual.chm</Setting>
|
||||||
|
<Setting name="documentationLocal">../../../Documentation/Official Documentation.html</Setting>
|
||||||
|
</Group>
|
||||||
|
<Group name="Selection">
|
||||||
|
<Setting name="fullBox">0</Setting>
|
||||||
|
</Group>
|
||||||
|
<Group name="EngineDevelopment">
|
||||||
|
<Setting name="showEditorProfiles">0</Setting>
|
||||||
|
<Setting name="toggleIntoEditor">0</Setting>
|
||||||
|
<Setting name="showEditorGuis">0</Setting>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
<Group name="ShapeEditor">
|
||||||
|
<Setting name="SunAngleZ">135</Setting>
|
||||||
|
<Setting name="gridDimension">40 40</Setting>
|
||||||
|
<Setting name="gridSize">0.1</Setting>
|
||||||
|
<Setting name="showObjBox">1</Setting>
|
||||||
|
<Setting name="AdvancedWndVisible">1</Setting>
|
||||||
|
<Setting name="showNodes">1</Setting>
|
||||||
|
<Setting name="ShowGrid">1</Setting>
|
||||||
|
<Setting name="SunDiffuseColor">255 255 255 255</Setting>
|
||||||
|
<Setting name="SunAngleX">45</Setting>
|
||||||
|
<Setting name="highlightMaterial">1</Setting>
|
||||||
|
<Setting name="backgroundColor">0 0 0 100</Setting>
|
||||||
|
<Setting name="renderMounts">1</Setting>
|
||||||
|
<Setting name="RenderCollision">0</Setting>
|
||||||
|
<Setting name="showBounds">0</Setting>
|
||||||
|
<Setting name="SunAmbientColor">180 180 180 255</Setting>
|
||||||
|
</Group>
|
||||||
|
<Group name="WorldEditor">
|
||||||
|
<Setting name="forceLoadDAE">0</Setting>
|
||||||
|
<Setting name="torsionPath">AssetWork_Debug.exe</Setting>
|
||||||
|
<Setting name="orthoFOV">50</Setting>
|
||||||
|
<Setting name="undoLimit">40</Setting>
|
||||||
|
<Setting name="EditorLayoutMode">Modern</Setting>
|
||||||
|
<Setting name="dropType">screenCenter</Setting>
|
||||||
|
<Setting name="orthoShowGrid">1</Setting>
|
||||||
|
<Setting name="displayType">6</Setting>
|
||||||
|
<Setting name="currentEditor">TerrainPainterPlugin</Setting>
|
||||||
|
<Group name="Images">
|
||||||
|
<Setting name="selectHandle">tools/worldEditor/images/SelectHandle</Setting>
|
||||||
|
<Setting name="lockedHandle">tools/worldEditor/images/LockedHandle</Setting>
|
||||||
|
<Setting name="defaultHandle">tools/worldEditor/images/DefaultHandle</Setting>
|
||||||
|
</Group>
|
||||||
|
<Group name="Docs">
|
||||||
|
<Setting name="documentationURL">http://www.garagegames.com/products/torque-3d/documentation/user</Setting>
|
||||||
|
<Setting name="forumURL">http://www.garagegames.com/products/torque-3d/forums</Setting>
|
||||||
|
<Setting name="documentationLocal">../../../Documentation/Official Documentation.html</Setting>
|
||||||
|
<Setting name="documentationReference">../../../Documentation/Torque 3D - Script Manual.chm</Setting>
|
||||||
|
</Group>
|
||||||
|
<Group name="Theme">
|
||||||
|
<Setting name="windowTitleFontColor">215 215 215 255</Setting>
|
||||||
|
<Setting name="windowTitleFontHLColor">255 255 255 255</Setting>
|
||||||
|
<Setting name="windowTitleBGColor">50 50 50 255</Setting>
|
||||||
|
<Setting name="windowTitleBGHLColor">48 48 48 255</Setting>
|
||||||
|
<Setting name="windowTitleBGNAColor">180 180 180 255</Setting>
|
||||||
|
</Group>
|
||||||
|
<Group name="Grid">
|
||||||
|
<Setting name="gridColor">102 102 102 100</Setting>
|
||||||
|
<Setting name="gridOriginColor">255 255 255 100</Setting>
|
||||||
|
<Setting name="gridMinorColor">51 51 51 100</Setting>
|
||||||
|
<Setting name="gridSize">1</Setting>
|
||||||
|
<Setting name="gridSnap">1</Setting>
|
||||||
|
</Group>
|
||||||
|
<Group name="ObjectIcons">
|
||||||
|
<Setting name="fadeIcons">1</Setting>
|
||||||
|
<Setting name="fadeIconsStartDist">8</Setting>
|
||||||
|
<Setting name="fadeIconsEndDist">20</Setting>
|
||||||
|
<Setting name="fadeIconsEndAlpha">0</Setting>
|
||||||
|
<Setting name="fadeIconsStartAlpha">255</Setting>
|
||||||
|
</Group>
|
||||||
|
<Group name="Tools">
|
||||||
|
<Setting name="dropAtScreenCenterScalar">1</Setting>
|
||||||
|
<Setting name="TerrainSnapOffsetZ">0</Setting>
|
||||||
|
<Setting name="OffsetZValue">0.01</Setting>
|
||||||
|
<Setting name="objectsUseBoxCenter">1</Setting>
|
||||||
|
<Setting name="boundingBoxCollision">0</Setting>
|
||||||
|
<Setting name="dropAtScreenCenterMax">100</Setting>
|
||||||
|
<Setting name="snapGround">0</Setting>
|
||||||
|
<Setting name="snapSoft">0</Setting>
|
||||||
|
<Setting name="snapSoftSize">2</Setting>
|
||||||
|
</Group>
|
||||||
|
<Group name="Render">
|
||||||
|
<Setting name="renderObjText">1</Setting>
|
||||||
|
<Setting name="renderPopupBackground">1</Setting>
|
||||||
|
<Setting name="showMousePopupInfo">1</Setting>
|
||||||
|
<Setting name="renderSelectionBox">1</Setting>
|
||||||
|
<Setting name="renderObjHandle">1</Setting>
|
||||||
|
</Group>
|
||||||
|
<Group name="Color">
|
||||||
|
<Setting name="objMouseOverSelectColor">0 0 255 255</Setting>
|
||||||
|
<Setting name="objSelectColor">255 0 0 255</Setting>
|
||||||
|
<Setting name="objMouseOverColor">0 255 0 255</Setting>
|
||||||
|
<Setting name="dragRectColor">255 255 0 255</Setting>
|
||||||
|
<Setting name="objectTextColor">255 255 255 255</Setting>
|
||||||
|
<Setting name="selectionBoxColor">255 255 0 255</Setting>
|
||||||
|
<Setting name="popupBackgroundColor">100 100 100 255</Setting>
|
||||||
|
</Group>
|
||||||
|
<Group name="Layout">
|
||||||
|
<Setting name="LayoutMode">Classic</Setting>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
<Group name="AssetCreation">
|
||||||
|
<Setting name="CubemapAssetSubdirectoryFormat"><AssetType>/</Setting>
|
||||||
|
<Setting name="LevelAssetSubdirectoryFormat"><AssetType>/<AssetName>/</Setting>
|
||||||
|
<Setting name="AssetImporDefaultConfig">TestConfig</Setting>
|
||||||
|
<Setting name="PostFXAssetSubdirectoryFormat"><AssetType>/</Setting>
|
||||||
|
<Setting name="CppAssetSubdirectoryFormat"><AssetType>/<SpecialAssetTag>/</Setting>
|
||||||
|
<Setting name="StatemachineAssetSubdirectoryFormat"><AssetType>/</Setting>
|
||||||
|
<Setting name="TerrainMatAssetSubdirectoryFormat"><AssetType>/</Setting>
|
||||||
|
<Setting name="ScriptAssetSubdirectoryFormat"><AssetType>/<SpecialAssetTag>/</Setting>
|
||||||
|
<Setting name="AutoImport">1</Setting>
|
||||||
|
<Setting name="TerrainAssetSubdirectoryFormat"><AssetType>/</Setting>
|
||||||
|
<Setting name="GUIAssetSubdirectoryFormat"><AssetType>/OtherFolder/</Setting>
|
||||||
|
</Group>
|
||||||
<Group name="LevelInformation">
|
<Group name="LevelInformation">
|
||||||
<Setting name="levelsDirectory">data/FPSGameplay/levels</Setting>
|
<Setting name="levelsDirectory">data/FPSGameplay/levels</Setting>
|
||||||
<Group name="levels">
|
<Group name="levels">
|
||||||
|
|
@ -11,209 +199,51 @@
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
<Group name="MeshRoadEditor">
|
<Group name="Assets">
|
||||||
<Setting name="DefaultNormal">0 0 1</Setting>
|
<Setting name="AssetImporDefaultConfig">TestConfig</Setting>
|
||||||
<Setting name="DefaultWidth">10</Setting>
|
<Setting name="AutoImport">0</Setting>
|
||||||
<Setting name="HoverSplineColor">255 0 0 255</Setting>
|
<Group name="Browser">
|
||||||
<Setting name="sideMaterialName">DefaultRoadMaterialOther</Setting>
|
<Setting name="previewTileSize">small</Setting>
|
||||||
<Setting name="topMaterialName">DefaultRoadMaterialTop</Setting>
|
|
||||||
<Setting name="SelectedSplineColor">0 255 0 255</Setting>
|
|
||||||
</Group>
|
|
||||||
<Group name="Theme">
|
|
||||||
<Setting name="fieldTextHLColor">234 232 230 255</Setting>
|
|
||||||
<Setting name="tooltipDividerColor">72 70 68 255</Setting>
|
|
||||||
<Setting name="tooltipTextColor">255 255 255 255</Setting>
|
|
||||||
<Setting name="headerColor">50 49 48 255</Setting>
|
|
||||||
<Setting name="fieldBGSELColor">100 98 96 255</Setting>
|
|
||||||
<Setting name="dividerMidColor">50 49 48 255</Setting>
|
|
||||||
<Setting name="dividerDarkColor">17 16 15 255</Setting>
|
|
||||||
<Setting name="dividerLightColor">96 94 92 255</Setting>
|
|
||||||
<Setting name="fieldBGHLColor">72 70 68 255</Setting>
|
|
||||||
<Setting name="fieldTextSELColor">255 255 255 255</Setting>
|
|
||||||
<Setting name="tooltipBGColor">43 43 43 255</Setting>
|
|
||||||
<Setting name="windowBackgroundColor">32 31 30 255</Setting>
|
|
||||||
<Setting name="tabsHLColor">50 49 48 255</Setting>
|
|
||||||
<Setting name="fieldTextColor">178 175 172 255</Setting>
|
|
||||||
<Setting name="fieldBGColor">59 58 57 255</Setting>
|
|
||||||
<Setting name="tabsColor">37 36 35 255</Setting>
|
|
||||||
<Setting name="tabsSELColor">59 58 57 255</Setting>
|
|
||||||
<Setting name="headerTextColor">236 234 232 255</Setting>
|
|
||||||
</Group>
|
|
||||||
<Group name="AxisGizmo">
|
|
||||||
<Setting name="renderInfoText">1</Setting>
|
|
||||||
<Setting name="mouseRotateScalar">0.8</Setting>
|
|
||||||
<Setting name="renderWhenUsed">0</Setting>
|
|
||||||
<Setting name="snapRotations">0</Setting>
|
|
||||||
<Setting name="axisGizmoMaxScreenLen">100</Setting>
|
|
||||||
<Setting name="mouseScaleScalar">0.8</Setting>
|
|
||||||
<Setting name="rotationSnap">15</Setting>
|
|
||||||
<Group name="Grid">
|
|
||||||
<Setting name="snapToGrid">0</Setting>
|
|
||||||
<Setting name="planeDim">500</Setting>
|
|
||||||
<Setting name="renderPlane">0</Setting>
|
|
||||||
<Setting name="gridSize">10 10 10</Setting>
|
|
||||||
<Setting name="gridColor">255 255 255 20</Setting>
|
|
||||||
<Setting name="renderPlaneHashes">0</Setting>
|
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
<Group name="GuiEditor">
|
|
||||||
<Setting name="lastPath">tools/gui</Setting>
|
|
||||||
<Setting name="previewResolution">1024 768</Setting>
|
|
||||||
<Group name="EngineDevelopment">
|
|
||||||
<Setting name="showEditorProfiles">0</Setting>
|
|
||||||
<Setting name="toggleIntoEditor">0</Setting>
|
|
||||||
<Setting name="showEditorGuis">0</Setting>
|
|
||||||
</Group>
|
|
||||||
<Group name="Library">
|
|
||||||
<Setting name="viewType">Categorized</Setting>
|
|
||||||
</Group>
|
|
||||||
<Group name="Snapping">
|
|
||||||
<Setting name="snapToCenters">1</Setting>
|
|
||||||
<Setting name="snapToControls">1</Setting>
|
|
||||||
<Setting name="snap2GridSize">8</Setting>
|
|
||||||
<Setting name="snap2Grid">0</Setting>
|
|
||||||
<Setting name="snapToCanvas">1</Setting>
|
|
||||||
<Setting name="snapToGuides">1</Setting>
|
|
||||||
<Setting name="sensitivity">2</Setting>
|
|
||||||
<Setting name="snapToEdges">1</Setting>
|
|
||||||
</Group>
|
|
||||||
<Group name="Help">
|
|
||||||
<Setting name="documentationReference">../../../Documentation/Torque 3D - Script Manual.chm</Setting>
|
|
||||||
<Setting name="documentationLocal">../../../Documentation/Official Documentation.html</Setting>
|
|
||||||
<Setting name="documentationURL">http://www.garagegames.com/products/torque-3d/documentation/user</Setting>
|
|
||||||
</Group>
|
|
||||||
<Group name="Rendering">
|
|
||||||
<Setting name="drawBorderLines">1</Setting>
|
|
||||||
<Setting name="drawGuides">1</Setting>
|
|
||||||
</Group>
|
|
||||||
<Group name="Selection">
|
|
||||||
<Setting name="fullBox">0</Setting>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
|
||||||
<Group name="WorldEditor">
|
|
||||||
<Setting name="orthoFOV">50</Setting>
|
|
||||||
<Setting name="orthoShowGrid">1</Setting>
|
|
||||||
<Setting name="torsionPath">AssetWork_Debug.exe</Setting>
|
|
||||||
<Setting name="forceLoadDAE">0</Setting>
|
|
||||||
<Setting name="displayType">6</Setting>
|
|
||||||
<Setting name="currentEditor">WorldEditorInspectorPlugin</Setting>
|
|
||||||
<Setting name="dropType">screenCenter</Setting>
|
|
||||||
<Setting name="undoLimit">40</Setting>
|
|
||||||
<Group name="Render">
|
|
||||||
<Setting name="showMousePopupInfo">1</Setting>
|
|
||||||
<Setting name="renderObjText">1</Setting>
|
|
||||||
<Setting name="renderSelectionBox">1</Setting>
|
|
||||||
<Setting name="renderObjHandle">1</Setting>
|
|
||||||
<Setting name="renderPopupBackground">1</Setting>
|
|
||||||
</Group>
|
|
||||||
<Group name="Color">
|
|
||||||
<Setting name="popupBackgroundColor">100 100 100 255</Setting>
|
|
||||||
<Setting name="objectTextColor">255 255 255 255</Setting>
|
|
||||||
<Setting name="dragRectColor">255 255 0 255</Setting>
|
|
||||||
<Setting name="objMouseOverColor">0 255 0 255</Setting>
|
|
||||||
<Setting name="selectionBoxColor">255 255 0 255</Setting>
|
|
||||||
<Setting name="objSelectColor">255 0 0 255</Setting>
|
|
||||||
<Setting name="objMouseOverSelectColor">0 0 255 255</Setting>
|
|
||||||
</Group>
|
|
||||||
<Group name="Grid">
|
|
||||||
<Setting name="gridMinorColor">51 51 51 100</Setting>
|
|
||||||
<Setting name="gridColor">102 102 102 100</Setting>
|
|
||||||
<Setting name="gridSize">1</Setting>
|
|
||||||
<Setting name="gridOriginColor">255 255 255 100</Setting>
|
|
||||||
<Setting name="gridSnap">0</Setting>
|
|
||||||
</Group>
|
|
||||||
<Group name="ObjectIcons">
|
|
||||||
<Setting name="fadeIconsEndDist">20</Setting>
|
|
||||||
<Setting name="fadeIconsStartDist">8</Setting>
|
|
||||||
<Setting name="fadeIcons">1</Setting>
|
|
||||||
<Setting name="fadeIconsEndAlpha">0</Setting>
|
|
||||||
<Setting name="fadeIconsStartAlpha">255</Setting>
|
|
||||||
</Group>
|
|
||||||
<Group name="Docs">
|
|
||||||
<Setting name="documentationReference">../../../Documentation/Torque 3D - Script Manual.chm</Setting>
|
|
||||||
<Setting name="documentationLocal">../../../Documentation/Official Documentation.html</Setting>
|
|
||||||
<Setting name="forumURL">http://www.garagegames.com/products/torque-3d/forums</Setting>
|
|
||||||
<Setting name="documentationURL">http://www.garagegames.com/products/torque-3d/documentation/user</Setting>
|
|
||||||
</Group>
|
|
||||||
<Group name="Tools">
|
|
||||||
<Setting name="boundingBoxCollision">0</Setting>
|
|
||||||
<Setting name="dropAtScreenCenterScalar">1</Setting>
|
|
||||||
<Setting name="objectsUseBoxCenter">1</Setting>
|
|
||||||
<Setting name="dropAtScreenCenterMax">100</Setting>
|
|
||||||
<Setting name="snapSoftSize">2</Setting>
|
|
||||||
<Setting name="snapSoft">0</Setting>
|
|
||||||
<Setting name="snapGround">0</Setting>
|
|
||||||
</Group>
|
|
||||||
<Group name="Theme">
|
|
||||||
<Setting name="windowTitleFontHLColor">255 255 255 255</Setting>
|
|
||||||
<Setting name="windowTitleBGColor">50 50 50 255</Setting>
|
|
||||||
<Setting name="windowTitleBGHLColor">48 48 48 255</Setting>
|
|
||||||
<Setting name="windowTitleFontColor">215 215 215 255</Setting>
|
|
||||||
<Setting name="windowTitleBGNAColor">180 180 180 255</Setting>
|
|
||||||
</Group>
|
|
||||||
<Group name="Images">
|
|
||||||
<Setting name="lockedHandle">tools/worldEditor/images/LockedHandle</Setting>
|
|
||||||
<Setting name="selectHandle">tools/worldEditor/images/SelectHandle</Setting>
|
|
||||||
<Setting name="defaultHandle">tools/worldEditor/images/DefaultHandle</Setting>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
|
||||||
<Group name="ShapeEditor">
|
|
||||||
<Setting name="SunAmbientColor">180 180 180 255</Setting>
|
|
||||||
<Setting name="RenderCollision">0</Setting>
|
|
||||||
<Setting name="showBounds">0</Setting>
|
|
||||||
<Setting name="renderMounts">1</Setting>
|
|
||||||
<Setting name="gridSize">0.1</Setting>
|
|
||||||
<Setting name="SunAngleZ">135</Setting>
|
|
||||||
<Setting name="showNodes">1</Setting>
|
|
||||||
<Setting name="highlightMaterial">1</Setting>
|
|
||||||
<Setting name="showObjBox">1</Setting>
|
|
||||||
<Setting name="SunDiffuseColor">255 255 255 255</Setting>
|
|
||||||
<Setting name="backgroundColor">0 0 0 100</Setting>
|
|
||||||
<Setting name="AdvancedWndVisible">1</Setting>
|
|
||||||
<Setting name="SunAngleX">45</Setting>
|
|
||||||
<Setting name="ShowGrid">1</Setting>
|
|
||||||
<Setting name="gridDimension">40 40</Setting>
|
|
||||||
</Group>
|
|
||||||
<Group name="TerrainEditor">
|
|
||||||
<Setting name="currentAction">lowerHeight</Setting>
|
|
||||||
<Group name="Brush">
|
|
||||||
<Setting name="brushPressure">1</Setting>
|
|
||||||
<Setting name="brushSize">40 40</Setting>
|
|
||||||
<Setting name="maxBrushSize">40 40</Setting>
|
|
||||||
<Setting name="brushSoftness">1</Setting>
|
|
||||||
<Setting name="brushType">ellipse</Setting>
|
|
||||||
</Group>
|
|
||||||
<Group name="ActionValues">
|
|
||||||
<Setting name="setHeightVal">100</Setting>
|
|
||||||
<Setting name="scaleVal">1</Setting>
|
|
||||||
<Setting name="SlopeMinAngle">0</Setting>
|
|
||||||
<Setting name="adjustHeightVal">10</Setting>
|
|
||||||
<Setting name="softSelectRadius">50</Setting>
|
|
||||||
<Setting name="SlopeMaxAngle">90</Setting>
|
|
||||||
<Setting name="softSelectDefaultFilter">1.000000 0.833333 0.666667 0.500000 0.333333 0.166667 0.000000</Setting>
|
|
||||||
<Setting name="softSelectFilter">1.000000 0.833333 0.666667 0.500000 0.333333 0.166667 0.000000</Setting>
|
|
||||||
<Setting name="noiseFactor">1</Setting>
|
|
||||||
<Setting name="smoothFactor">0.1</Setting>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
|
||||||
<Group name="RiverEditor">
|
|
||||||
<Setting name="DefaultNormal">0 0 1</Setting>
|
|
||||||
<Setting name="HoverNodeColor">255 255 255 255</Setting>
|
|
||||||
<Setting name="HoverSplineColor">255 0 0 255</Setting>
|
|
||||||
<Setting name="SelectedSplineColor">0 255 0 255</Setting>
|
|
||||||
<Setting name="DefaultWidth">10</Setting>
|
|
||||||
<Setting name="DefaultDepth">5</Setting>
|
|
||||||
</Group>
|
|
||||||
<Group name="NavEditor">
|
<Group name="NavEditor">
|
||||||
<Setting name="backgroundBuild">1</Setting>
|
<Setting name="backgroundBuild">1</Setting>
|
||||||
<Setting name="SpawnClass">AIPlayer</Setting>
|
|
||||||
<Setting name="spawnDatablock">DefaultPlayerData</Setting>
|
<Setting name="spawnDatablock">DefaultPlayerData</Setting>
|
||||||
|
<Setting name="SpawnClass">AIPlayer</Setting>
|
||||||
|
</Group>
|
||||||
|
<Group name="RiverEditor">
|
||||||
|
<Setting name="DefaultNormal">0 0 1</Setting>
|
||||||
|
<Setting name="HoverSplineColor">255 0 0 255</Setting>
|
||||||
|
<Setting name="DefaultWidth">10</Setting>
|
||||||
|
<Setting name="DefaultDepth">5</Setting>
|
||||||
|
<Setting name="HoverNodeColor">255 255 255 255</Setting>
|
||||||
|
<Setting name="SelectedSplineColor">0 255 0 255</Setting>
|
||||||
|
</Group>
|
||||||
|
<Group name="AxisGizmo">
|
||||||
|
<Setting name="rotationSnap">15</Setting>
|
||||||
|
<Setting name="mouseRotateScalar">0.8</Setting>
|
||||||
|
<Setting name="snapRotations">0</Setting>
|
||||||
|
<Setting name="mouseScaleScalar">0.8</Setting>
|
||||||
|
<Setting name="renderInfoText">1</Setting>
|
||||||
|
<Setting name="renderWhenUsed">0</Setting>
|
||||||
|
<Setting name="axisGizmoMaxScreenLen">100</Setting>
|
||||||
|
<Group name="Grid">
|
||||||
|
<Setting name="gridSize">1 1 1</Setting>
|
||||||
|
<Setting name="planeDim">500</Setting>
|
||||||
|
<Setting name="gridColor">255 255 255 20</Setting>
|
||||||
|
<Setting name="renderPlane">0</Setting>
|
||||||
|
<Setting name="snapToGrid">1</Setting>
|
||||||
|
<Setting name="renderPlaneHashes">0</Setting>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
<Group name="AssetBrowser">
|
||||||
|
<Setting name="previewSize">Small</Setting>
|
||||||
</Group>
|
</Group>
|
||||||
<Group name="RoadEditor">
|
<Group name="RoadEditor">
|
||||||
<Setting name="HoverNodeColor">255 255 255 255</Setting>
|
|
||||||
<Setting name="DefaultWidth">10</Setting>
|
|
||||||
<Setting name="materialName">DefaultDecalRoadMaterial</Setting>
|
<Setting name="materialName">DefaultDecalRoadMaterial</Setting>
|
||||||
|
<Setting name="DefaultWidth">10</Setting>
|
||||||
<Setting name="SelectedSplineColor">0 255 0 255</Setting>
|
<Setting name="SelectedSplineColor">0 255 0 255</Setting>
|
||||||
|
<Setting name="HoverNodeColor">255 255 255 255</Setting>
|
||||||
</Group>
|
</Group>
|
||||||
<Group name="ConvexEditor">
|
<Group name="ConvexEditor">
|
||||||
<Setting name="materialName">Grid_512_Orange</Setting>
|
<Setting name="materialName">Grid_512_Orange</Setting>
|
||||||
|
|
|
||||||
|
|
@ -299,6 +299,20 @@
|
||||||
function CreateNewTerrainGui::onWake( %this )
|
function CreateNewTerrainGui::onWake( %this )
|
||||||
{
|
{
|
||||||
%this-->theName.setText( "" );
|
%this-->theName.setText( "" );
|
||||||
|
|
||||||
|
//Run through and grab any TerrainMaterialAssets
|
||||||
|
%assetQuery = new AssetQuery();
|
||||||
|
AssetDatabase.findAssetType(%assetQuery, "TerrainMaterialAsset");
|
||||||
|
|
||||||
|
%count = %assetQuery.getCount();
|
||||||
|
|
||||||
|
for(%i=0; %i < %count; %i++)
|
||||||
|
{
|
||||||
|
%assetId = %assetQuery.getAsset(%i);
|
||||||
|
|
||||||
|
AssetDatabase.acquireAsset(%assetId);
|
||||||
|
}
|
||||||
|
%assetQuery.delete();
|
||||||
|
|
||||||
%matList = %this-->theMaterialList;
|
%matList = %this-->theMaterialList;
|
||||||
%matList.clear();
|
%matList.clear();
|
||||||
|
|
@ -313,8 +327,8 @@ function CreateNewTerrainGui::onWake( %this )
|
||||||
%rezList.add( "512", 512 );
|
%rezList.add( "512", 512 );
|
||||||
%rezList.add( "1024", 1024 );
|
%rezList.add( "1024", 1024 );
|
||||||
%rezList.add( "2048", 2048 );
|
%rezList.add( "2048", 2048 );
|
||||||
//%rezList.add( "4096", 4096 );
|
%rezList.add( "4096", 4096 );
|
||||||
%rezList.setSelected( 256 );
|
%rezList.setSelected( 512 );
|
||||||
|
|
||||||
%this-->flatRadio.setStateOn( true );
|
%this-->flatRadio.setStateOn( true );
|
||||||
}
|
}
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -227,6 +227,77 @@ function ObjectBuilderGui::gotFileName(%this, %name)
|
||||||
//%this.controls[%this.currentControl].setValue(%name);
|
//%this.controls[%this.currentControl].setValue(%name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
function ObjectBuilderGui::createTerrainAssetType(%this, %index)
|
||||||
|
{
|
||||||
|
if(%index >= %this.numFields || %this.field[%index, name] $= "")
|
||||||
|
{
|
||||||
|
error("ObjectBuilderGui::createTerrainAssetType: invalid field");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
if(%this.field[%index, text] $= "")
|
||||||
|
%name = %this.field[%index, name];
|
||||||
|
else
|
||||||
|
%name = %this.field[%index, text];
|
||||||
|
|
||||||
|
//
|
||||||
|
%this.textControls[%this.numControls] = new GuiTextCtrl() {
|
||||||
|
profile = "ToolsGuiTextRightProfile";
|
||||||
|
text = %name;
|
||||||
|
extent = %this.fieldNameExtent;
|
||||||
|
position = %this.curXPos @ " " @ %this.curYPos;
|
||||||
|
modal = "1";
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
%this.controls[%this.numControls] = new GuiButtonCtrl() {
|
||||||
|
HorizSizing = "width";
|
||||||
|
profile = "ToolsGuiButtonProfile";
|
||||||
|
extent = %this.fileButtonExtent;
|
||||||
|
position = %this.curXPos + %this.columnOffset @ " " @ %this.curYPos;
|
||||||
|
modal = "1";
|
||||||
|
command = %this @ ".getTerrainAsset(" @ %index @ ");";
|
||||||
|
};
|
||||||
|
|
||||||
|
%val = %this.field[%index, value];
|
||||||
|
%this.controls[%this.numControls].setValue(fileBase(%val) @ fileExt(%val));
|
||||||
|
|
||||||
|
%this.numControls++;
|
||||||
|
%this.curYPos += %this.defaultFieldStep;
|
||||||
|
}
|
||||||
|
|
||||||
|
function ObjectBuilderGui::getTerrainAsset(%this, %index)
|
||||||
|
{
|
||||||
|
if(%index >= %this.numFields || %this.field[%index, name] $= "")
|
||||||
|
{
|
||||||
|
error("ObjectBuilderGui::getTerrainAsset: invalid field");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
%val = %this.field[%index, ext];
|
||||||
|
|
||||||
|
//%path = filePath(%val);
|
||||||
|
//%ext = fileExt(%val);
|
||||||
|
|
||||||
|
%this.currentControl = %index;
|
||||||
|
AssetBrowser.showDialog("TerrainAsset", %this @ ".gotTerrainAsset", "", "", "");
|
||||||
|
//getLoadFilename( %val @ "|" @ %val, %this @ ".gotFileName", %this.lastPath );
|
||||||
|
}
|
||||||
|
|
||||||
|
function ObjectBuilderGui::gotTerrainAsset(%this, %name)
|
||||||
|
{
|
||||||
|
%index = %this.currentControl;
|
||||||
|
|
||||||
|
%this.field[%index, value] = %name;
|
||||||
|
%this.controls[%this.currentControl].setText(fileBase(%name) @ fileExt(%name));
|
||||||
|
|
||||||
|
%this.lastPath = %name;
|
||||||
|
|
||||||
|
// This doesn't work for button controls as getValue returns their state!
|
||||||
|
//%this.controls[%this.currentControl].setValue(%name);
|
||||||
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
function ObjectBuilderGui::createMaterialNameType(%this, %index)
|
function ObjectBuilderGui::createMaterialNameType(%this, %index)
|
||||||
|
|
@ -489,6 +560,9 @@ function ObjectBuilderGui::process(%this)
|
||||||
|
|
||||||
case "TypeFile":
|
case "TypeFile":
|
||||||
%this.createFileType(%i);
|
%this.createFileType(%i);
|
||||||
|
|
||||||
|
case "TypeTerrainAsset":
|
||||||
|
%this.createTerrainAssetType(%i);
|
||||||
|
|
||||||
case "TypeMaterialName":
|
case "TypeMaterialName":
|
||||||
%this.createMaterialNameType(%i);
|
%this.createMaterialNameType(%i);
|
||||||
|
|
@ -830,6 +904,7 @@ function ObjectBuilderGui::buildTerrainBlock(%this)
|
||||||
%this.createCallback = "ETerrainEditor.attachTerrain();";
|
%this.createCallback = "ETerrainEditor.attachTerrain();";
|
||||||
|
|
||||||
%this.addField("terrainFile", "TypeFile", "Terrain file", "", "*.ter");
|
%this.addField("terrainFile", "TypeFile", "Terrain file", "", "*.ter");
|
||||||
|
%this.addField("terrainAsset", "TypeTerrainAsset", "Terrain Asset", "", "");
|
||||||
%this.addField("squareSize", "TypeInt", "Square size", "8");
|
%this.addField("squareSize", "TypeInt", "Square size", "8");
|
||||||
|
|
||||||
%this.process();
|
%this.process();
|
||||||
|
|
|
||||||
|
|
@ -1885,6 +1885,9 @@ function Editor::open(%this)
|
||||||
Canvas.setContent(EditorGui);
|
Canvas.setContent(EditorGui);
|
||||||
$isFirstPersonVar = true;
|
$isFirstPersonVar = true;
|
||||||
EditorGui.syncCameraGui();
|
EditorGui.syncCameraGui();
|
||||||
|
|
||||||
|
if(EditorSettings.value("WorldEditor/Layout/LayoutMode", "Classic") $= "Modern")
|
||||||
|
togglePanelLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
function Editor::close(%this, %gui)
|
function Editor::close(%this, %gui)
|
||||||
|
|
|
||||||
|
|
@ -164,7 +164,7 @@ function toggleEditor(%make)
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// The editor action maps are defined in editor.bind.cs
|
// The editor action maps are defined in editor.bind.cs
|
||||||
GlobalActionMap.bind(keyboard, "f11", toggleEditor);
|
GlobalActionMap.bind(keyboard, "f11", fastLoadWorldEdit);
|
||||||
|
|
||||||
|
|
||||||
// The scenario:
|
// The scenario:
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,8 @@ EditorSettings.endGroup();
|
||||||
|
|
||||||
EditorSettings.beginGroup( "Tools" );
|
EditorSettings.beginGroup( "Tools" );
|
||||||
EditorSettings.setDefaultValue( "snapGround", "0" );
|
EditorSettings.setDefaultValue( "snapGround", "0" );
|
||||||
|
EditorSettings.setDefaultValue( "TerrainSnapOffsetZ", "0" );
|
||||||
|
EditorSettings.setDefaultValue( "OffsetZValue", "0.01" );
|
||||||
EditorSettings.setDefaultValue( "snapSoft", "0" );
|
EditorSettings.setDefaultValue( "snapSoft", "0" );
|
||||||
EditorSettings.setDefaultValue( "snapSoftSize", "2.0" );
|
EditorSettings.setDefaultValue( "snapSoftSize", "2.0" );
|
||||||
EditorSettings.setDefaultValue( "boundingBoxCollision", "0" );
|
EditorSettings.setDefaultValue( "boundingBoxCollision", "0" );
|
||||||
|
|
@ -215,6 +217,8 @@ function EditorGui::readWorldEditorSettings(%this)
|
||||||
|
|
||||||
EditorSettings.beginGroup( "Tools" );
|
EditorSettings.beginGroup( "Tools" );
|
||||||
EWorldEditor.stickToGround = EditorSettings.value("snapGround"); //$pref::WorldEditor::snapGround;
|
EWorldEditor.stickToGround = EditorSettings.value("snapGround"); //$pref::WorldEditor::snapGround;
|
||||||
|
EWorldEditor.TerrainSnapOffsetZ = EditorSettings.value("TerrainSnapOffsetZ"); //$pref::WorldEditor::TerrainSnapOffsetZ;
|
||||||
|
EWorldEditor.OffsetZValue = EditorSettings.value("OffsetZValue"); //$pref::WorldEditor::OffsetZValue;
|
||||||
EWorldEditor.setSoftSnap( EditorSettings.value("snapSoft") ); //$pref::WorldEditor::snapSoft
|
EWorldEditor.setSoftSnap( EditorSettings.value("snapSoft") ); //$pref::WorldEditor::snapSoft
|
||||||
EWorldEditor.setSoftSnapSize( EditorSettings.value("snapSoftSize") ); //$pref::WorldEditor::snapSoftSize
|
EWorldEditor.setSoftSnapSize( EditorSettings.value("snapSoftSize") ); //$pref::WorldEditor::snapSoftSize
|
||||||
EWorldEditor.boundingBoxCollision = EditorSettings.value("boundingBoxCollision"); //$pref::WorldEditor::boundingBoxCollision;
|
EWorldEditor.boundingBoxCollision = EditorSettings.value("boundingBoxCollision"); //$pref::WorldEditor::boundingBoxCollision;
|
||||||
|
|
@ -310,6 +314,8 @@ function EditorGui::writeWorldEditorSettings(%this)
|
||||||
|
|
||||||
EditorSettings.beginGroup( "Tools" );
|
EditorSettings.beginGroup( "Tools" );
|
||||||
EditorSettings.setValue( "snapGround", EWorldEditor.stickToGround ); //$Pref::WorldEditor::snapGround
|
EditorSettings.setValue( "snapGround", EWorldEditor.stickToGround ); //$Pref::WorldEditor::snapGround
|
||||||
|
EditorSettings.setValue( "TerrainSnapOffsetZ", EWorldEditor.TerrainSnapOffsetZ ); //$pref::WorldEditor::TerrainSnapOffsetZ;
|
||||||
|
EditorSettings.setValue( "OffsetZValue", EWorldEditor.OffsetZValue ); //$pref::WorldEditor::OffsetZValue;
|
||||||
EditorSettings.setValue( "snapSoft", EWorldEditor.getSoftSnap() ); //$Pref::WorldEditor::snapSoft
|
EditorSettings.setValue( "snapSoft", EWorldEditor.getSoftSnap() ); //$Pref::WorldEditor::snapSoft
|
||||||
EditorSettings.setValue( "snapSoftSize", EWorldEditor.getSoftSnapSize() ); //$Pref::WorldEditor::snapSoftSize
|
EditorSettings.setValue( "snapSoftSize", EWorldEditor.getSoftSnapSize() ); //$Pref::WorldEditor::snapSoftSize
|
||||||
EditorSettings.setValue( "boundingBoxCollision", EWorldEditor.boundingBoxCollision ); //$Pref::WorldEditor::boundingBoxCollision
|
EditorSettings.setValue( "boundingBoxCollision", EWorldEditor.boundingBoxCollision ); //$Pref::WorldEditor::boundingBoxCollision
|
||||||
|
|
|
||||||
|
|
@ -83,6 +83,20 @@ function TerrainMaterialDlg::onWake( %this )
|
||||||
if( !isObject( TerrainMaterialDlgDeleteGroup ) )
|
if( !isObject( TerrainMaterialDlgDeleteGroup ) )
|
||||||
new SimGroup( TerrainMaterialDlgDeleteGroup );
|
new SimGroup( TerrainMaterialDlgDeleteGroup );
|
||||||
|
|
||||||
|
//Run through and grab any TerrainMaterialAssets
|
||||||
|
%assetQuery = new AssetQuery();
|
||||||
|
AssetDatabase.findAssetType(%assetQuery, "TerrainMaterialAsset");
|
||||||
|
|
||||||
|
%count = %assetQuery.getCount();
|
||||||
|
|
||||||
|
for(%i=0; %i < %count; %i++)
|
||||||
|
{
|
||||||
|
%assetId = %assetQuery.getAsset(%i);
|
||||||
|
|
||||||
|
AssetDatabase.acquireAsset(%assetId);
|
||||||
|
}
|
||||||
|
%assetQuery.delete();
|
||||||
|
|
||||||
// Snapshot the materials.
|
// Snapshot the materials.
|
||||||
%this.snapshotMaterials();
|
%this.snapshotMaterials();
|
||||||
|
|
||||||
|
|
@ -292,12 +306,33 @@ function TerrainMaterialDlg::changeNormal( %this )
|
||||||
%ctrl.setBitmap( %file );
|
%ctrl.setBitmap( %file );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
function TerrainMaterialDlg::changePBRConfig( %this )
|
||||||
|
{
|
||||||
|
%ctrl = %this-->pbrConfigTexCtrl;
|
||||||
|
%file = %ctrl.bitmap;
|
||||||
|
if( getSubStr( %file, 0 , 6 ) $= "tools/" )
|
||||||
|
%file = "";
|
||||||
|
|
||||||
|
%file = TerrainMaterialDlg._selectTextureFileDialog( %file );
|
||||||
|
if( %file $= "" )
|
||||||
|
{
|
||||||
|
if( %ctrl.bitmap !$= "" )
|
||||||
|
%file = %ctrl.bitmap;
|
||||||
|
else
|
||||||
|
%file = "tools/materialEditor/gui/unknownImage";
|
||||||
|
}
|
||||||
|
|
||||||
|
%file = makeRelativePath( %file, getMainDotCsDir() );
|
||||||
|
%ctrl.setBitmap( %file );
|
||||||
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
function TerrainMaterialDlg::newMat( %this )
|
function TerrainMaterialDlg::newMat( %this )
|
||||||
{
|
{
|
||||||
// Create a unique material name.
|
// Create a unique material name.
|
||||||
%matName = getUniqueInternalName( "newMaterial", TerrainMaterialSet, true );
|
/*%matName = getUniqueInternalName( "newMaterial", TerrainMaterialSet, true );
|
||||||
|
|
||||||
// Create the new material.
|
// Create the new material.
|
||||||
%newMat = new TerrainMaterial()
|
%newMat = new TerrainMaterial()
|
||||||
|
|
@ -308,12 +343,16 @@ function TerrainMaterialDlg::newMat( %this )
|
||||||
%newMat.setFileName( "art/terrains/materials.cs" );
|
%newMat.setFileName( "art/terrains/materials.cs" );
|
||||||
|
|
||||||
// Mark it as dirty and to be saved in the default location.
|
// Mark it as dirty and to be saved in the default location.
|
||||||
ETerrainMaterialPersistMan.setDirty( %newMat, "art/terrains/materials.cs" );
|
ETerrainMaterialPersistMan.setDirty( %newMat, "art/terrains/materials.cs" );*/
|
||||||
|
|
||||||
%matLibTree = %this-->matLibTree;
|
%scene = getRootScene();
|
||||||
%matLibTree.buildVisibleTree( true );
|
%path = filePath(%scene.getFilename());
|
||||||
%item = %matLibTree.findItemByObjectId( %newMat );
|
%module = AssetBrowser.getModuleFromAddress(%path);
|
||||||
%matLibTree.selectItem( %item );
|
AssetBrowser.selectedModule = %module.moduleID;
|
||||||
|
|
||||||
|
AssetBrowser.currentAddress = "data/" @ %module.moduleID;
|
||||||
|
|
||||||
|
AssetBrowser.setupCreateNewAsset("TerrainMaterialAsset", AssetBrowser.selectedModule);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
@ -380,6 +419,11 @@ function TerrainMaterialDlg::setActiveMaterial( %this, %mat )
|
||||||
}else{
|
}else{
|
||||||
%this-->baseTexCtrl.setBitmap( %mat.diffuseMap );
|
%this-->baseTexCtrl.setBitmap( %mat.diffuseMap );
|
||||||
}
|
}
|
||||||
|
if (%mat.pbrConfigMap $= ""){
|
||||||
|
%this-->pbrConfigTexCtrl.setBitmap( "tools/materialEditor/gui/unknownImage" );
|
||||||
|
}else{
|
||||||
|
%this-->pbrConfigTexCtrl.setBitmap( %mat.pbrConfigMap );
|
||||||
|
}
|
||||||
if (%mat.detailMap $= ""){
|
if (%mat.detailMap $= ""){
|
||||||
%this-->detailTexCtrl.setBitmap( "tools/materialEditor/gui/unknownImage" );
|
%this-->detailTexCtrl.setBitmap( "tools/materialEditor/gui/unknownImage" );
|
||||||
}else{
|
}else{
|
||||||
|
|
@ -438,6 +482,11 @@ function TerrainMaterialDlg::saveDirtyMaterial( %this, %mat )
|
||||||
}else{
|
}else{
|
||||||
%newNormal = %this-->normTexCtrl.bitmap;
|
%newNormal = %this-->normTexCtrl.bitmap;
|
||||||
}
|
}
|
||||||
|
if (%this-->pbrConfigTexCtrl.bitmap $= "tools/materialEditor/gui/unknownImage"){
|
||||||
|
%newPBRConfig = "";
|
||||||
|
}else{
|
||||||
|
%newPBRConfig = %this-->pbrConfigTexCtrl.bitmap;
|
||||||
|
}
|
||||||
if (%this-->detailTexCtrl.bitmap $= "tools/materialEditor/gui/unknownImage"){
|
if (%this-->detailTexCtrl.bitmap $= "tools/materialEditor/gui/unknownImage"){
|
||||||
%newDetail = "";
|
%newDetail = "";
|
||||||
}else{
|
}else{
|
||||||
|
|
@ -466,6 +515,7 @@ function TerrainMaterialDlg::saveDirtyMaterial( %this, %mat )
|
||||||
%mat.diffuseMap $= %newDiffuse &&
|
%mat.diffuseMap $= %newDiffuse &&
|
||||||
%mat.normalMap $= %newNormal &&
|
%mat.normalMap $= %newNormal &&
|
||||||
%mat.detailMap $= %newDetail &&
|
%mat.detailMap $= %newDetail &&
|
||||||
|
%mat.pbrConfigMap $= %newPBRConfig &&
|
||||||
%mat.macroMap $= %newMacro &&
|
%mat.macroMap $= %newMacro &&
|
||||||
%mat.detailSize == %detailSize &&
|
%mat.detailSize == %detailSize &&
|
||||||
%mat.diffuseSize == %diffuseSize &&
|
%mat.diffuseSize == %diffuseSize &&
|
||||||
|
|
@ -497,7 +547,8 @@ function TerrainMaterialDlg::saveDirtyMaterial( %this, %mat )
|
||||||
}
|
}
|
||||||
|
|
||||||
%mat.diffuseMap = %newDiffuse;
|
%mat.diffuseMap = %newDiffuse;
|
||||||
%mat.normalMap = %newNormal;
|
%mat.normalMap = %newNormal;
|
||||||
|
%mat.pbrConfigMap = %newPBRConfig;
|
||||||
%mat.detailMap = %newDetail;
|
%mat.detailMap = %newDetail;
|
||||||
%mat.macroMap = %newMacro;
|
%mat.macroMap = %newMacro;
|
||||||
%mat.detailSize = %detailSize;
|
%mat.detailSize = %detailSize;
|
||||||
|
|
@ -543,6 +594,7 @@ function TerrainMaterialDlg::snapshotMaterials( %this )
|
||||||
internalName = %mat.internalName;
|
internalName = %mat.internalName;
|
||||||
diffuseMap = %mat.diffuseMap;
|
diffuseMap = %mat.diffuseMap;
|
||||||
normalMap = %mat.normalMap;
|
normalMap = %mat.normalMap;
|
||||||
|
pbrConfigMap = %mat.pbrConfigMap;
|
||||||
detailMap = %mat.detailMap;
|
detailMap = %mat.detailMap;
|
||||||
macroMap = %mat.macroMap;
|
macroMap = %mat.macroMap;
|
||||||
detailSize = %mat.detailSize;
|
detailSize = %mat.detailSize;
|
||||||
|
|
@ -577,6 +629,7 @@ function TerrainMaterialDlg::restoreMaterials( %this )
|
||||||
%mat.setInternalName( %obj.internalName );
|
%mat.setInternalName( %obj.internalName );
|
||||||
%mat.diffuseMap = %obj.diffuseMap;
|
%mat.diffuseMap = %obj.diffuseMap;
|
||||||
%mat.normalMap = %obj.normalMap;
|
%mat.normalMap = %obj.normalMap;
|
||||||
|
%mat.pbrConfigMap = %obj.pbrConfigMap;
|
||||||
%mat.detailMap = %obj.detailMap;
|
%mat.detailMap = %obj.detailMap;
|
||||||
%mat.macroMap = %obj.macroMap;
|
%mat.macroMap = %obj.macroMap;
|
||||||
%mat.detailSize = %obj.detailSize;
|
%mat.detailSize = %obj.detailSize;
|
||||||
|
|
|
||||||
|
|
@ -280,7 +280,17 @@ function EditorSaveMission()
|
||||||
initContainerTypeSearch($TypeMasks::TerrainObjectType);
|
initContainerTypeSearch($TypeMasks::TerrainObjectType);
|
||||||
|
|
||||||
while ((%terrainObject = containerSearchNext()) != 0)
|
while ((%terrainObject = containerSearchNext()) != 0)
|
||||||
%terrainObject.save(%terrainObject.terrainFile);
|
{
|
||||||
|
if(%terrainObject.terrainAsset !$= "")
|
||||||
|
{
|
||||||
|
//we utilize a terrain asset, so we'll update our dependencies while we're at it
|
||||||
|
%terrainObject.saveAsset();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
%terrainObject.save(%terrainObject.terrainFile);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ETerrainPersistMan.saveDirty();
|
ETerrainPersistMan.saveDirty();
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
// IN THE SOFTWARE.
|
// IN THE SOFTWARE.
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Debug Shaders.
|
// Debug Shaders.
|
||||||
new ShaderData( AL_ColorBufferShader )
|
singleton shaderData( AL_ColorBufferShader )
|
||||||
{
|
{
|
||||||
DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
|
DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
|
||||||
DXPixelShaderFile = "./shaders/dbgColorBufferP.hlsl";
|
DXPixelShaderFile = "./shaders/dbgColorBufferP.hlsl";
|
||||||
|
|
@ -59,7 +59,7 @@ function toggleColorBufferViz( %enable )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
new ShaderData( AL_SpecMapShader )
|
singleton shaderData( AL_SpecMapShader )
|
||||||
{
|
{
|
||||||
DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
|
DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
|
||||||
DXPixelShaderFile = "./shaders/dbgSpecMapVisualizeP.hlsl";
|
DXPixelShaderFile = "./shaders/dbgSpecMapVisualizeP.hlsl";
|
||||||
|
|
@ -94,7 +94,7 @@ function toggleSpecMapViz( %enable )
|
||||||
AL_SpecMapVisualize.disable();
|
AL_SpecMapVisualize.disable();
|
||||||
}
|
}
|
||||||
|
|
||||||
new GFXStateBlockData( AL_DepthVisualizeState )
|
singleton GFXStateBlockData( AL_DepthVisualizeState )
|
||||||
{
|
{
|
||||||
zDefined = true;
|
zDefined = true;
|
||||||
zEnable = false;
|
zEnable = false;
|
||||||
|
|
@ -105,7 +105,7 @@ new GFXStateBlockData( AL_DepthVisualizeState )
|
||||||
samplerStates[1] = SamplerClampLinear; // viz color lookup
|
samplerStates[1] = SamplerClampLinear; // viz color lookup
|
||||||
};
|
};
|
||||||
|
|
||||||
new GFXStateBlockData( AL_DefaultVisualizeState )
|
singleton GFXStateBlockData( AL_DefaultVisualizeState )
|
||||||
{
|
{
|
||||||
blendDefined = true;
|
blendDefined = true;
|
||||||
blendEnable = true;
|
blendEnable = true;
|
||||||
|
|
@ -121,7 +121,7 @@ new GFXStateBlockData( AL_DefaultVisualizeState )
|
||||||
samplerStates[1] = SamplerClampLinear; // depthviz
|
samplerStates[1] = SamplerClampLinear; // depthviz
|
||||||
};
|
};
|
||||||
|
|
||||||
new ShaderData( AL_DepthVisualizeShader )
|
singleton shaderData( AL_DepthVisualizeShader )
|
||||||
{
|
{
|
||||||
DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
|
DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
|
||||||
DXPixelShaderFile = "./shaders/dbgDepthVisualizeP.hlsl";
|
DXPixelShaderFile = "./shaders/dbgDepthVisualizeP.hlsl";
|
||||||
|
|
@ -157,7 +157,7 @@ function AL_DepthVisualize::onEnabled( %this )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
new ShaderData( AL_GlowVisualizeShader )
|
singleton shaderData( AL_GlowVisualizeShader )
|
||||||
{
|
{
|
||||||
DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
|
DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
|
||||||
DXPixelShaderFile = "./shaders/dbgGlowVisualizeP.hlsl";
|
DXPixelShaderFile = "./shaders/dbgGlowVisualizeP.hlsl";
|
||||||
|
|
@ -178,7 +178,7 @@ singleton PostEffect( AL_GlowVisualize )
|
||||||
renderPriority = 9999;
|
renderPriority = 9999;
|
||||||
};
|
};
|
||||||
|
|
||||||
new ShaderData( AL_NormalsVisualizeShader )
|
singleton shaderData( AL_NormalsVisualizeShader )
|
||||||
{
|
{
|
||||||
DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
|
DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
|
||||||
DXPixelShaderFile = "./shaders/dbgNormalVisualizeP.hlsl";
|
DXPixelShaderFile = "./shaders/dbgNormalVisualizeP.hlsl";
|
||||||
|
|
@ -214,7 +214,7 @@ function AL_NormalsVisualize::onEnabled( %this )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
new ShaderData( AL_LightColorVisualizeShader )
|
singleton shaderData( AL_LightColorVisualizeShader )
|
||||||
{
|
{
|
||||||
DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
|
DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
|
||||||
DXPixelShaderFile = "./shaders/dbgLightColorVisualizeP.hlsl";
|
DXPixelShaderFile = "./shaders/dbgLightColorVisualizeP.hlsl";
|
||||||
|
|
@ -249,7 +249,7 @@ function AL_LightColorVisualize::onEnabled( %this )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
new ShaderData( AL_LightSpecularVisualizeShader )
|
singleton shaderData( AL_LightSpecularVisualizeShader )
|
||||||
{
|
{
|
||||||
DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
|
DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
|
||||||
DXPixelShaderFile = "./shaders/dbgLightSpecularVisualizeP.hlsl";
|
DXPixelShaderFile = "./shaders/dbgLightSpecularVisualizeP.hlsl";
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
new GFXStateBlockData( Viz_DefaultVisualizeState )
|
singleton GFXStateBlockData( Viz_DefaultVisualizeState )
|
||||||
{
|
{
|
||||||
/*alphaDefined = true;
|
/*alphaDefined = true;
|
||||||
alphaTestEnable = true;
|
alphaTestEnable = true;
|
||||||
|
|
@ -39,7 +39,7 @@ new GFXStateBlockData( Viz_DefaultVisualizeState )
|
||||||
samplerStates[4] = SamplerClampLinear; // depthviz
|
samplerStates[4] = SamplerClampLinear; // depthviz
|
||||||
};
|
};
|
||||||
|
|
||||||
new ShaderData( Viz_TexelDensity )
|
singleton shaderData( Viz_TexelDensity )
|
||||||
{
|
{
|
||||||
DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
|
DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
|
||||||
DXPixelShaderFile = "./shaders/Viz_TexelDensityP.hlsl";
|
DXPixelShaderFile = "./shaders/Viz_TexelDensityP.hlsl";
|
||||||
|
|
@ -79,7 +79,7 @@ function toggleTexelDensityViz( %enable )
|
||||||
|
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
new ShaderData( Viz_SurfaceProperties )
|
singleton shaderData( Viz_SurfaceProperties )
|
||||||
{
|
{
|
||||||
DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
|
DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
|
||||||
DXPixelShaderFile = "./shaders/Viz_SurfacePropertiesP.hlsl";
|
DXPixelShaderFile = "./shaders/Viz_SurfacePropertiesP.hlsl";
|
||||||
|
|
@ -203,7 +203,7 @@ function Viz_SurfacePropertiesPFX::onEnabled( %this )
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
new ShaderData( Viz_ColorBlindness )
|
singleton shaderData( Viz_ColorBlindness )
|
||||||
{
|
{
|
||||||
DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
|
DXVertexShaderFile = $Core::CommonShaderPath @ "/postFX/postFxV.hlsl";
|
||||||
DXPixelShaderFile = "./shaders/Viz_ColorblindnessP.hlsl";
|
DXPixelShaderFile = "./shaders/Viz_ColorblindnessP.hlsl";
|
||||||
|
|
@ -307,7 +307,7 @@ function Viz_ColorBlindnessPFX::onEnabled( %this )
|
||||||
|
|
||||||
//
|
//
|
||||||
//Material Complexity Viz
|
//Material Complexity Viz
|
||||||
new ShaderData( Viz_MaterialComplexity )
|
singleton shaderData( Viz_MaterialComplexity )
|
||||||
{
|
{
|
||||||
DXVertexShaderFile = "./shaders/Viz_materialComplexityV.hlsl";
|
DXVertexShaderFile = "./shaders/Viz_materialComplexityV.hlsl";
|
||||||
DXPixelShaderFile = "./shaders/Viz_materialComplexityP.hlsl";
|
DXPixelShaderFile = "./shaders/Viz_materialComplexityP.hlsl";
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
// IN THE SOFTWARE.
|
// IN THE SOFTWARE.
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
new ShaderData( AL_ShadowVisualizeShader )
|
singleton shaderData( AL_ShadowVisualizeShader )
|
||||||
{
|
{
|
||||||
DXVertexShaderFile = $Core::CommonShaderPath @ "/guiMaterialV.hlsl";
|
DXVertexShaderFile = $Core::CommonShaderPath @ "/guiMaterialV.hlsl";
|
||||||
DXPixelShaderFile = "./shaders/dbgShadowVisualizeP.hlsl";
|
DXPixelShaderFile = "./shaders/dbgShadowVisualizeP.hlsl";
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
:: Delete procedural shaders
|
:: Delete procedural shaders
|
||||||
echo shaders
|
echo shaders
|
||||||
del /q /a:-R shaders\procedural\*.*
|
del /q /a:-R data\shaderCachel\*.*
|
||||||
:: Delete dumped shader disassembly files
|
:: Delete dumped shader disassembly files
|
||||||
for /R %%a IN (*._dis.txt) do IF EXIST "%%a._dis.txt" del "%%a._dis.txt"
|
for /R %%a IN (*._dis.txt) do IF EXIST "%%a._dis.txt" del "%%a._dis.txt"
|
||||||
|
|
||||||
|
|
@ -38,10 +38,11 @@ IF EXIST "scripts\server\banlist.cs" del /s scripts\server\banlist.cs
|
||||||
IF EXIST "scripts\server\prefs.cs" del /s scripts\server\prefs.cs
|
IF EXIST "scripts\server\prefs.cs" del /s scripts\server\prefs.cs
|
||||||
IF EXIST "client\config.cs" del /s client\config.cs
|
IF EXIST "client\config.cs" del /s client\config.cs
|
||||||
IF EXIST "config.cs" del /s config.cs
|
IF EXIST "config.cs" del /s config.cs
|
||||||
IF EXIST "tools\settings.xml" del /s tools\settings.xml
|
:: IF EXIST "tools\settings.xml" del /s tools\settings.xml
|
||||||
IF EXIST "banlist.cs" del /s banlist.cs
|
IF EXIST "banlist.cs" del /s banlist.cs
|
||||||
|
|
||||||
:: logs
|
:: logs
|
||||||
echo logs
|
echo logs
|
||||||
IF EXIST "torque3d.log" del /s torque3d.log
|
IF EXIST "torque3d.log" del /s torque3d.log
|
||||||
echo DONE!
|
IF EXIST "console.log" del /s console.log
|
||||||
|
echo DONE!
|
||||||
Loading…
Add table
Add a link
Reference in a new issue