Merge pull request #415 from Areloch/GroundPlaneAssetify

Converts GroundPlane to utilize assets
This commit is contained in:
Brian Roberts 2020-12-19 02:35:32 -06:00 committed by GitHub
commit 7dc6fc8abf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
22 changed files with 278 additions and 129 deletions

View file

@ -85,6 +85,35 @@ ConsoleSetType(TypeMaterialAssetPtr)
Con::warnf("(TypeMaterialAssetPtr) - Cannot set multiple args to a single asset."); Con::warnf("(TypeMaterialAssetPtr) - Cannot set multiple args to a single asset.");
} }
ConsoleType(assetIdString, TypeMaterialAssetId, String, ASSET_ID_FIELD_PREFIX)
ConsoleGetType(TypeMaterialAssetId)
{
// Fetch asset Id.
return *((const char**)(dptr));
}
ConsoleSetType(TypeMaterialAssetId)
{
// Was a single argument specified?
if (argc == 1)
{
// Yes, so fetch field value.
const char* pFieldValue = argv[0];
// Fetch asset Id.
StringTableEntry* assetId = (StringTableEntry*)(dptr);
// Update asset value.
*assetId = StringTable->insert(pFieldValue);
return;
}
// Warn.
Con::warnf("(TypeMaterialAssetId) - Cannot set multiple args to a single asset.");
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
MaterialAsset::MaterialAsset() MaterialAsset::MaterialAsset()
@ -180,6 +209,51 @@ DefineEngineMethod(MaterialAsset, compileShader, void, (), , "Compiles the mater
object->compileShader(); object->compileShader();
} }
//------------------------------------------------------------------------------
StringTableEntry MaterialAsset::getAssetIdByMaterialName(StringTableEntry matName)
{
StringTableEntry materialAssetId = StringTable->EmptyString();
AssetQuery* query = new AssetQuery();
U32 foundCount = AssetDatabase.findAssetType(query, "MaterialAsset");
if (foundCount == 0)
{
//Didn't work, so have us fall back to a placeholder asset
materialAssetId = StringTable->insert("Core_Rendering:noMaterial");
}
else
{
for (U32 i = 0; i < foundCount; i++)
{
MaterialAsset* matAsset = AssetDatabase.acquireAsset<MaterialAsset>(query->mAssetList[i]);
if (matAsset && matAsset->getMaterialDefinitionName() == matName)
{
materialAssetId = matAsset->getAssetId();
break;
}
}
}
return materialAssetId;
}
bool MaterialAsset::getAssetById(StringTableEntry assetId, AssetPtr<MaterialAsset>* materialAsset)
{
(*materialAsset) = assetId;
if (!materialAsset->isNull())
return true;
//Didn't work, so have us fall back to a placeholder asset
StringTableEntry noImageId = StringTable->insert("Core_Rendering:noMaterial");
materialAsset->setAssetId(noImageId);
if (!materialAsset->isNull())
return true;
return false;
}
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// GuiInspectorTypeAssetId // GuiInspectorTypeAssetId
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@ -187,7 +261,7 @@ DefineEngineMethod(MaterialAsset, compileShader, void, (), , "Compiles the mater
IMPLEMENT_CONOBJECT(GuiInspectorTypeMaterialAssetPtr); IMPLEMENT_CONOBJECT(GuiInspectorTypeMaterialAssetPtr);
ConsoleDocClass(GuiInspectorTypeMaterialAssetPtr, ConsoleDocClass(GuiInspectorTypeMaterialAssetPtr,
"@brief Inspector field type for Material Asset Objects\n\n" "@brief Inspector field type for Shapes\n\n"
"Editor use only.\n\n" "Editor use only.\n\n"
"@internal" "@internal"
); );
@ -202,70 +276,36 @@ void GuiInspectorTypeMaterialAssetPtr::consoleInit()
GuiControl* GuiInspectorTypeMaterialAssetPtr::constructEditControl() GuiControl* GuiInspectorTypeMaterialAssetPtr::constructEditControl()
{ {
// Create base filename edit controls // Create base filename edit controls
mUseHeightOverride = true; GuiControl* retCtrl = Parent::constructEditControl();
mHeightOverride = 100; if (retCtrl == NULL)
return retCtrl;
mMatEdContainer = new GuiControl();
mMatEdContainer->registerObject();
addObject(mMatEdContainer);
// Create "Open in ShapeEditor" button
mMatPreviewButton = new GuiBitmapButtonCtrl();
const char* matAssetId = getData();
MaterialAsset* matAsset = AssetDatabase.acquireAsset< MaterialAsset>(matAssetId);
Material* materialDef = nullptr;
char bitmapName[512] = "tools/worldEditor/images/toolbar/shape-editor";
StringTableEntry matDefName = matAsset ? matAsset->getMaterialDefinitionName() : matAssetId;
if (!Sim::findObject(matDefName, materialDef))
{
Con::errorf("GuiInspectorTypeMaterialAssetPtr::constructEditControl() - unable to find material in asset");
}
else
{
mMatPreviewButton->setBitmap(materialDef->mDiffuseMapFilename[0]);
}
mMatPreviewButton->setPosition(0, 0);
mMatPreviewButton->setExtent(100,100);
// Change filespec // Change filespec
char szBuffer[512]; char szBuffer[512];
dSprintf(szBuffer, sizeof(szBuffer), "AssetBrowser.showDialog(\"MaterialAsset\", \"AssetBrowser.changeAsset\", %d, %s);", dSprintf(szBuffer, sizeof(szBuffer), "AssetBrowser.showDialog(\"MaterialAsset\", \"AssetBrowser.changeAsset\", %s, %s);",
mInspector->getComponentGroupTargetId(), mCaption); mInspector->getInspectObject()->getIdString(), mCaption);
mMatPreviewButton->setField("Command", szBuffer); mBrowseButton->setField("Command", szBuffer);
mMatPreviewButton->setDataField(StringTable->insert("Profile"), NULL, "GuiButtonProfile"); setDataField(StringTable->insert("targetObject"), NULL, mInspector->getInspectObject()->getIdString());
mMatPreviewButton->setDataField(StringTable->insert("tooltipprofile"), NULL, "GuiToolTipProfile");
mMatPreviewButton->setDataField(StringTable->insert("hovertime"), NULL, "1000");
StringBuilder strbld; // Create "Open in Editor" button
strbld.append(matDefName); mEditButton = new GuiBitmapButtonCtrl();
strbld.append("\n");
strbld.append("Open this file in the Material Editor");
mMatPreviewButton->setDataField(StringTable->insert("tooltip"), NULL, strbld.data()); dSprintf(szBuffer, sizeof(szBuffer), "AssetBrowser.editAsset(%d.getText());", retCtrl->getId());
mEditButton->setField("Command", szBuffer);
_registerEditControl(mMatPreviewButton); char bitmapName[512] = "tools/worldEditor/images/toolbar/material-editor";
//mMatPreviewButton->registerObject(); mEditButton->setBitmap(bitmapName);
mMatEdContainer->addObject(mMatPreviewButton);
mMatAssetIdTxt = new GuiTextEditCtrl(); mEditButton->setDataField(StringTable->insert("Profile"), NULL, "GuiButtonProfile");
mMatAssetIdTxt->registerObject(); mEditButton->setDataField(StringTable->insert("tooltipprofile"), NULL, "GuiToolTipProfile");
mMatAssetIdTxt->setActive(false); mEditButton->setDataField(StringTable->insert("hovertime"), NULL, "1000");
mEditButton->setDataField(StringTable->insert("tooltip"), NULL, "Open this file in the Material Editor");
mMatAssetIdTxt->setText(matAssetId); mEditButton->registerObject();
addObject(mEditButton);
mMatAssetIdTxt->setBounds(100, 0, 150, 18); return retCtrl;
mMatEdContainer->addObject(mMatAssetIdTxt);
return mMatEdContainer;
} }
bool GuiInspectorTypeMaterialAssetPtr::updateRects() bool GuiInspectorTypeMaterialAssetPtr::updateRects()
@ -279,54 +319,32 @@ bool GuiInspectorTypeMaterialAssetPtr::updateRects()
mEditCtrlRect.set(fieldExtent.x - dividerPos + dividerMargin, 1, dividerPos - dividerMargin - 34, fieldExtent.y); mEditCtrlRect.set(fieldExtent.x - dividerPos + dividerMargin, 1, dividerPos - dividerMargin - 34, fieldExtent.y);
bool resized = mEdit->resize(mEditCtrlRect.point, mEditCtrlRect.extent); bool resized = mEdit->resize(mEditCtrlRect.point, mEditCtrlRect.extent);
if (mBrowseButton != NULL)
if (mMatEdContainer != nullptr && mMatPreviewButton != nullptr)
{ {
mMatPreviewButton->resize(mEditCtrlRect.point, mEditCtrlRect.extent); mBrowseRect.set(fieldExtent.x - 32, 2, 14, fieldExtent.y - 4);
resized |= mBrowseButton->resize(mBrowseRect.point, mBrowseRect.extent);
} }
if (mMatPreviewButton != nullptr) if (mEditButton != NULL)
{ {
mMatPreviewButton->resize(Point2I::Zero, Point2I(100, 100)); RectI shapeEdRect(fieldExtent.x - 16, 2, 14, fieldExtent.y - 4);
} resized |= mEditButton->resize(shapeEdRect.point, shapeEdRect.extent);
if (mMatAssetIdTxt != nullptr)
{
mMatAssetIdTxt->resize(Point2I(100, 0), Point2I(mEditCtrlRect.extent.x - 100, 18));
} }
return resized; return resized;
} }
bool GuiInspectorTypeMaterialAssetPtr::resize(const Point2I& newPosition, const Point2I& newExtent) IMPLEMENT_CONOBJECT(GuiInspectorTypeMaterialAssetId);
ConsoleDocClass(GuiInspectorTypeMaterialAssetId,
"@brief Inspector field type for Material Assets\n\n"
"Editor use only.\n\n"
"@internal"
);
void GuiInspectorTypeMaterialAssetId::consoleInit()
{ {
if (!Parent::resize(newPosition, newExtent)) Parent::consoleInit();
return false;
if (mMatEdContainer != NULL) ConsoleBaseType::getType(TypeMaterialAssetId)->setInspectorFieldType("GuiInspectorTypeMaterialAssetId");
{
return updateRects();
}
return false;
}
void GuiInspectorTypeMaterialAssetPtr::setMaterialAsset(String assetId)
{
mTargetObject->setDataField(mCaption, "", assetId);
//force a refresh
SimObject* obj = mInspector->getInspectObject();
mInspector->inspectObject(obj);
}
DefineEngineMethod(GuiInspectorTypeMaterialAssetPtr, 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);
} }

View file

@ -42,9 +42,7 @@
#include "gfx/gfxDevice.h" #include "gfx/gfxDevice.h"
#endif #endif
#ifndef _GUI_INSPECTOR_TYPES_H_
#include "gui/editor/guiInspectorTypes.h" #include "gui/editor/guiInspectorTypes.h"
#endif
#include "materials/matTextureTarget.h" #include "materials/matTextureTarget.h"
#include "materials/materialDefinition.h" #include "materials/materialDefinition.h"
@ -77,6 +75,9 @@ public:
inline StringTableEntry getScriptPath(void) const { return mScriptPath; }; inline StringTableEntry getScriptPath(void) const { return mScriptPath; };
static StringTableEntry getAssetIdByMaterialName(StringTableEntry fileName);
static bool getAssetById(StringTableEntry assetId, AssetPtr<MaterialAsset>* materialAsset);
/// Declare Console Object. /// Declare Console Object.
DECLARE_CONOBJECT(MaterialAsset); DECLARE_CONOBJECT(MaterialAsset);
@ -89,26 +90,32 @@ protected:
}; };
DefineConsoleType(TypeMaterialAssetPtr, MaterialAsset) DefineConsoleType(TypeMaterialAssetPtr, MaterialAsset)
DefineConsoleType(TypeMaterialAssetId, String)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// TypeAssetId GuiInspectorField Class // TypeAssetId GuiInspectorField Class
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
class GuiInspectorTypeMaterialAssetPtr : public GuiInspectorField class GuiInspectorTypeMaterialAssetPtr : public GuiInspectorTypeFileName
{ {
typedef GuiInspectorField Parent; typedef GuiInspectorTypeFileName Parent;
public: public:
GuiControl* mMatEdContainer; GuiBitmapButtonCtrl* mEditButton;
GuiBitmapButtonCtrl *mMatPreviewButton;
GuiTextEditCtrl *mMatAssetIdTxt;
DECLARE_CONOBJECT(GuiInspectorTypeMaterialAssetPtr); DECLARE_CONOBJECT(GuiInspectorTypeMaterialAssetPtr);
static void consoleInit(); static void consoleInit();
virtual GuiControl* constructEditControl(); virtual GuiControl* constructEditControl();
virtual bool updateRects(); virtual bool updateRects();
virtual bool resize(const Point2I& newPosition, const Point2I& newExtent); };
void setMaterialAsset(String assetId);
class GuiInspectorTypeMaterialAssetId : public GuiInspectorTypeMaterialAssetPtr
{
typedef GuiInspectorTypeMaterialAssetPtr Parent;
public:
DECLARE_CONOBJECT(GuiInspectorTypeMaterialAssetId);
static void consoleInit();
}; };
#endif // _ASSET_BASE_H_ #endif // _ASSET_BASE_H_

View file

@ -2636,6 +2636,8 @@ Torque::Path AssetImporter::importMaterialAsset(AssetImportObject* assetItem)
newAsset->setAssetName(assetName); newAsset->setAssetName(assetName);
newAsset->setScriptFile(scriptName.c_str()); newAsset->setScriptFile(scriptName.c_str());
newAsset->setDataField(StringTable->insert("originalFilePath"), nullptr, qualifiedFromFile); newAsset->setDataField(StringTable->insert("originalFilePath"), nullptr, qualifiedFromFile);
newAsset->setDataField(StringTable->insert("materialDefinitionName"), nullptr, assetName);
//iterate through and write out the material maps dependencies //iterate through and write out the material maps dependencies
S32 dependencySlotId = 0; S32 dependencySlotId = 0;

View file

@ -85,6 +85,9 @@ GroundPlane::GroundPlane()
mConvexList = new Convex; mConvexList = new Convex;
mTypeMask |= TerrainLikeObjectType; mTypeMask |= TerrainLikeObjectType;
mMaterialAsset = StringTable->EmptyString();
mMaterialAssetId = StringTable->EmptyString();
} }
GroundPlane::~GroundPlane() GroundPlane::~GroundPlane()
@ -103,7 +106,14 @@ void GroundPlane::initPersistFields()
addField( "squareSize", TypeF32, Offset( mSquareSize, GroundPlane ), "Square size in meters to which %GroundPlane subdivides its geometry." ); addField( "squareSize", TypeF32, Offset( mSquareSize, GroundPlane ), "Square size in meters to which %GroundPlane subdivides its geometry." );
addField( "scaleU", TypeF32, Offset( mScaleU, GroundPlane ), "Scale of texture repeat in the U direction." ); addField( "scaleU", TypeF32, Offset( mScaleU, GroundPlane ), "Scale of texture repeat in the U direction." );
addField( "scaleV", TypeF32, Offset( mScaleV, GroundPlane ), "Scale of texture repeat in the V direction." ); addField( "scaleV", TypeF32, Offset( mScaleV, GroundPlane ), "Scale of texture repeat in the V direction." );
addField( "material", TypeMaterialName, Offset( mMaterialName, GroundPlane ), "Name of Material used to render %GroundPlane's surface." );
addProtectedField("materialAsset", TypeMaterialAssetId, Offset(mMaterialAssetId, GroundPlane),
&GroundPlane::_setMaterialAsset, &defaultProtectedGetFn,
"The material asset.");
addProtectedField("material", TypeMaterialName, Offset(mMaterialName, GroundPlane),
&GroundPlane::_setMaterialName, &defaultProtectedGetFn,
"The material name.");
endGroup( "Plane" ); endGroup( "Plane" );
@ -114,6 +124,72 @@ void GroundPlane::initPersistFields()
removeField( "rotation" ); removeField( "rotation" );
} }
bool GroundPlane::_setMaterialAsset(void* obj, const char* index, const char* data)
{
GroundPlane* gp = static_cast<GroundPlane*>(obj);// ->setFile(FileName(data));
gp->mMaterialAssetId = StringTable->insert(data);
return gp->setMaterialAsset(gp->mMaterialAssetId);
}
bool GroundPlane::_setMaterialName(void* obj, const char* index, const char* data)
{
GroundPlane* gp = static_cast<GroundPlane*>(obj);// ->setFile(FileName(data));
StringTableEntry assetId = MaterialAsset::getAssetIdByMaterialName(StringTable->insert(data));
if (assetId != StringTable->EmptyString())
{
//Special exception case. If we've defaulted to the 'no shape' mesh, don't save it out, we'll retain the original ids/paths so it doesn't break
//the TSStatic
if (gp->setMaterialAsset(assetId))
{
if (assetId == StringTable->insert("Core_Rendering:NoMaterial"))
{
gp->mMaterialName = data;
gp->mMaterialAssetId = StringTable->EmptyString();
return true;
}
else
{
gp->mMaterialAssetId = assetId;
gp->mMaterialName = StringTable->EmptyString();
return false;
}
}
}
else
{
gp->mMaterialAsset = StringTable->EmptyString();
gp->mMaterialName = data;
}
return true;
}
bool GroundPlane::setMaterialAsset(const StringTableEntry materialAssetId)
{
if (MaterialAsset::getAssetById(materialAssetId, &mMaterialAsset))
{
//Special exception case. If we've defaulted to the 'no shape' mesh, don't save it out, we'll retain the original ids/paths so it doesn't break
//the TSStatic
if (mMaterialAsset.getAssetId() != StringTable->insert("Core_Rendering:noMaterial"))
{
mMaterialName = StringTable->EmptyString();
}
_updateMaterial();
setMaskBits(-1);
return true;
}
return false;
}
bool GroundPlane::onAdd() bool GroundPlane::onAdd()
{ {
if( !Parent::onAdd() ) if( !Parent::onAdd() )
@ -187,6 +263,7 @@ U32 GroundPlane::packUpdate( NetConnection* connection, U32 mask, BitStream* str
stream->write( mSquareSize ); stream->write( mSquareSize );
stream->write( mScaleU ); stream->write( mScaleU );
stream->write( mScaleV ); stream->write( mScaleV );
stream->writeString( mMaterialAsset.getAssetId() );
stream->write( mMaterialName ); stream->write( mMaterialName );
return retMask; return retMask;
@ -199,6 +276,11 @@ void GroundPlane::unpackUpdate( NetConnection* connection, BitStream* stream )
stream->read( &mSquareSize ); stream->read( &mSquareSize );
stream->read( &mScaleU ); stream->read( &mScaleU );
stream->read( &mScaleV ); stream->read( &mScaleV );
char buffer[256];
stream->readString(buffer);
setMaterialAsset(StringTable->insert(buffer));
stream->read( &mMaterialName ); stream->read( &mMaterialName );
// If we're added then something possibly changed in // If we're added then something possibly changed in
@ -213,23 +295,14 @@ void GroundPlane::unpackUpdate( NetConnection* connection, BitStream* stream )
void GroundPlane::_updateMaterial() void GroundPlane::_updateMaterial()
{ {
if( mMaterialName.isEmpty() ) if (!mMaterialAsset.isNull())
{ {
Con::warnf( "GroundPlane::_updateMaterial - no material set; defaulting to 'WarningMaterial'" ); String matName = mMaterialAsset->getMaterialDefinitionName();
mMaterialName = "WarningMaterial";
mMaterial = MATMGR->createMatInstance(matName, getGFXVertexFormat< VertexType >());
if (!mMaterial)
Con::errorf("GroundPlane::_updateMaterial - no material called '%s'", matName.c_str());
} }
// If the material name matches then don't
// bother updating it.
if ( mMaterial &&
mMaterialName.compare( mMaterial->getMaterial()->getName() ) == 0 )
return;
SAFE_DELETE( mMaterial );
mMaterial = MATMGR->createMatInstance( mMaterialName, getGFXVertexFormat< VertexType >() );
if ( !mMaterial )
Con::errorf( "GroundPlane::_updateMaterial - no material called '%s'", mMaterialName.c_str() );
} }
bool GroundPlane::castRay( const Point3F& start, const Point3F& end, RayInfo* info ) bool GroundPlane::castRay( const Point3F& start, const Point3F& end, RayInfo* info )
@ -582,6 +655,13 @@ void GroundPlane::generateGrid( U32 width, U32 height, F32 squareSize,
outPrimitives.unlock(); outPrimitives.unlock();
} }
void GroundPlane::getUtilizedAssets(Vector<StringTableEntry>* usedAssetsList)
{
if (!mMaterialAsset.isNull() && mMaterialAsset->getAssetId() != StringTable->insert("Core_Rendering:noMaterial"))
usedAssetsList->push_back_unique(mMaterialAsset->getAssetId());
}
DefineEngineMethod( GroundPlane, postApply, void, (),, DefineEngineMethod( GroundPlane, postApply, void, (),,
"Intended as a helper to developers and editor scripts.\n" "Intended as a helper to developers and editor scripts.\n"
"Force trigger an inspectPostApply. This will transmit " "Force trigger an inspectPostApply. This will transmit "

View file

@ -33,6 +33,8 @@
#include "gfx/gfxPrimitiveBuffer.h" #include "gfx/gfxPrimitiveBuffer.h"
#endif #endif
#include "T3D/assets/MaterialAsset.h"
class PhysicsBody; class PhysicsBody;
class BaseMatInstance; class BaseMatInstance;
@ -62,6 +64,9 @@ public:
GroundPlane(); GroundPlane();
virtual ~GroundPlane(); virtual ~GroundPlane();
static bool _setMaterialAsset(void* obj, const char* index, const char* data);
static bool _setMaterialName(void* obj, const char* index, const char* data);
virtual bool onAdd(); virtual bool onAdd();
virtual void onRemove(); virtual void onRemove();
virtual U32 packUpdate( NetConnection* connection, U32 mask, BitStream* stream ); virtual U32 packUpdate( NetConnection* connection, U32 mask, BitStream* stream );
@ -76,6 +81,10 @@ public:
static void initPersistFields(); static void initPersistFields();
bool setMaterialAsset(const StringTableEntry materialAssetId);
virtual void getUtilizedAssets(Vector<StringTableEntry>* usedAssetsList);
protected: protected:
typedef GFXVertexPNTBT VertexType; typedef GFXVertexPNTBT VertexType;
@ -103,6 +112,9 @@ private:
String mMaterialName; ///< Object name of material to use. String mMaterialName; ///< Object name of material to use.
BaseMatInstance* mMaterial; ///< Instantiated material based on given material name. BaseMatInstance* mMaterial; ///< Instantiated material based on given material name.
AssetPtr<MaterialAsset> mMaterialAsset;
StringTableEntry mMaterialAssetId;
PhysicsBody *mPhysicsRep; PhysicsBody *mPhysicsRep;
/// @name Rendering State /// @name Rendering State

View file

@ -0,0 +1,6 @@
<MaterialAsset
canSave="true"
canSaveDynamicFields="true"
AssetName="NoMaterial"
scriptFile="@assetFile=NoMaterial.cs"
materialDefinitionName="NoMaterial" />

View file

@ -0,0 +1,6 @@
//--- OBJECT WRITE BEGIN ---
singleton Material(NoMaterial) {
mapTo="NoMaterial";
DiffuseMap = "core/rendering/images/warnMat";
};
//--- OBJECT WRITE END ---

View file

@ -36,7 +36,7 @@ new Scene(EditorTemplateLevel) {
squareSize = "128"; squareSize = "128";
scaleU = "25"; scaleU = "25";
scaleV = "25"; scaleV = "25";
Material = "Grid_512_Grey"; Material = "FloorGray";
canSave = "1"; canSave = "1";
canSaveDynamicFields = "1"; canSaveDynamicFields = "1";
Enabled = "1"; Enabled = "1";
@ -100,7 +100,6 @@ new Scene(EditorTemplateLevel) {
canSave = "1"; canSave = "1";
canSaveDynamicFields = "1"; canSaveDynamicFields = "1";
persistentId = "fff282f5-dced-11e9-a423-bb0e346e3870"; persistentId = "fff282f5-dced-11e9-a423-bb0e346e3870";
reflectionPath = "D:/Gamedev/T3DMIT/T3DPreview4_0/Bugfixaroo/My Projects/Bugfixaroo/game/data/ExampleModule/levels/ExampleLevel/probes/";
}; };
}; };
//--- OBJECT WRITE END --- //--- OBJECT WRITE END ---

View file

@ -3,5 +3,6 @@
canSaveDynamicFields="true" canSaveDynamicFields="true"
AssetName="DetailBlue" AssetName="DetailBlue"
scriptFile="@assetFile=DetailBlue.cs" scriptFile="@assetFile=DetailBlue.cs"
materialDefinitionName="DetailBlue"
imageMap0="@Asset=Prototyping:DetailBlue_ALBEDO" imageMap0="@Asset=Prototyping:DetailBlue_ALBEDO"
originalFilePath="D:/Gamedev/art/Blockout/DetailBlue.png" /> originalFilePath="D:/Gamedev/art/Blockout/DetailBlue.png" />

View file

@ -3,5 +3,6 @@
canSaveDynamicFields="true" canSaveDynamicFields="true"
AssetName="FloorGray" AssetName="FloorGray"
scriptFile="@assetFile=FloorGray.cs" scriptFile="@assetFile=FloorGray.cs"
materialDefinitionName="FloorGray"
imageMap0="@Asset=Prototyping:FloorGray_ALBEDO" imageMap0="@Asset=Prototyping:FloorGray_ALBEDO"
originalFilePath="D:/Gamedev/art/Blockout/FloorGray.png" /> originalFilePath="D:/Gamedev/art/Blockout/FloorGray.png" />

View file

@ -3,5 +3,6 @@
canSaveDynamicFields="true" canSaveDynamicFields="true"
AssetName="InteractiveRed" AssetName="InteractiveRed"
scriptFile="@assetFile=InteractiveRed.cs" scriptFile="@assetFile=InteractiveRed.cs"
materialDefinitionName="InteractiveRed"
imageMap0="@Asset=Prototyping:InteractiveRed_ALBEDO" imageMap0="@Asset=Prototyping:InteractiveRed_ALBEDO"
originalFilePath="D:/Gamedev/art/Blockout/InteractiveRed.png" /> originalFilePath="D:/Gamedev/art/Blockout/InteractiveRed.png" />

View file

@ -3,5 +3,6 @@
canSaveDynamicFields="true" canSaveDynamicFields="true"
AssetName="NatureBrown" AssetName="NatureBrown"
scriptFile="@assetFile=NatureBrown.cs" scriptFile="@assetFile=NatureBrown.cs"
materialDefinitionName="NatureBrown"
imageMap0="@Asset=Prototyping:NatureBrown_ALBEDO" imageMap0="@Asset=Prototyping:NatureBrown_ALBEDO"
originalFilePath="D:/Gamedev/art/Blockout/NatureBrown.png" /> originalFilePath="D:/Gamedev/art/Blockout/NatureBrown.png" />

View file

@ -3,5 +3,6 @@
canSaveDynamicFields="true" canSaveDynamicFields="true"
AssetName="NatureGreen" AssetName="NatureGreen"
scriptFile="@assetFile=NatureGreen.cs" scriptFile="@assetFile=NatureGreen.cs"
materialDefinitionName="NatureGreen"
imageMap0="@Asset=Prototyping:NatureGreen_ALBEDO" imageMap0="@Asset=Prototyping:NatureGreen_ALBEDO"
originalFilePath="D:/Gamedev/art/Blockout/NatureGreen.png" /> originalFilePath="D:/Gamedev/art/Blockout/NatureGreen.png" />

View file

@ -3,5 +3,6 @@
canSaveDynamicFields="true" canSaveDynamicFields="true"
AssetName="NullPink" AssetName="NullPink"
scriptFile="@assetFile=NullPink.cs" scriptFile="@assetFile=NullPink.cs"
materialDefinitionName="NullPink"
imageMap0="@Asset=Prototyping:NullPink_ALBEDO" imageMap0="@Asset=Prototyping:NullPink_ALBEDO"
originalFilePath="D:/Gamedev/art/Blockout/NullPink.png" /> originalFilePath="D:/Gamedev/art/Blockout/NullPink.png" />

View file

@ -3,5 +3,6 @@
canSaveDynamicFields="true" canSaveDynamicFields="true"
AssetName="TrimYellow" AssetName="TrimYellow"
scriptFile="@assetFile=TrimYellow.cs" scriptFile="@assetFile=TrimYellow.cs"
materialDefinitionName="TrimYellow"
imageMap0="@Asset=Prototyping:TrimYellow_ALBEDO" imageMap0="@Asset=Prototyping:TrimYellow_ALBEDO"
originalFilePath="D:/Gamedev/art/Blockout/TrimYellow.png" /> originalFilePath="D:/Gamedev/art/Blockout/TrimYellow.png" />

View file

@ -3,5 +3,6 @@
canSaveDynamicFields="true" canSaveDynamicFields="true"
AssetName="WallOrange" AssetName="WallOrange"
scriptFile="@assetFile=WallOrange.cs" scriptFile="@assetFile=WallOrange.cs"
materialDefinitionName="WallOrange"
imageMap0="@Asset=Prototyping:WallOrange_ALBEDO" imageMap0="@Asset=Prototyping:WallOrange_ALBEDO"
originalFilePath="D:/Gamedev/art/Blockout/WallOrange.png" /> originalFilePath="D:/Gamedev/art/Blockout/WallOrange.png" />

View file

@ -3,5 +3,6 @@
canSaveDynamicFields="true" canSaveDynamicFields="true"
AssetName="WaterBlue" AssetName="WaterBlue"
scriptFile="@assetFile=WaterBlue.cs" scriptFile="@assetFile=WaterBlue.cs"
materialDefinitionName="WaterBlue"
imageMap0="@Asset=Prototyping:WaterBlue_ALBEDO" imageMap0="@Asset=Prototyping:WaterBlue_ALBEDO"
originalFilePath="D:/Gamedev/art/Blockout/WaterBlue.png" /> originalFilePath="D:/Gamedev/art/Blockout/WaterBlue.png" />

View file

@ -3,5 +3,6 @@
canSaveDynamicFields="true" canSaveDynamicFields="true"
AssetName="kork_chan" AssetName="kork_chan"
scriptFile="@assetFile=kork_chan.cs" scriptFile="@assetFile=kork_chan.cs"
materialDefinitionName="kork_chan"
imageMap0="@Asset=Prototyping:kork_chan_ALBEDO" imageMap0="@Asset=Prototyping:kork_chan_ALBEDO"
originalFilePath="D:/Gamedev/T3DMIT/Resources/Prototyping/Shapes" /> originalFilePath="D:/Gamedev/T3DMIT/Resources/Prototyping/Shapes" />

View file

@ -28,6 +28,12 @@ function AssetBrowser::editAsset(%this, %assetDef)
} }
} }
} }
else if(!isObject(%assetDef) && strchrpos(%assetDef, ":") != -1)
{
//Turns out we were passed an assetid, not an asset definition.
//Grab the asset def from that
%assetDef = AssetDatabase.acquireAsset(%assetDef);
}
%assetType = %assetDef.getClassName(); %assetType = %assetDef.getClassName();

View file

@ -6,5 +6,5 @@
LevelName="DefaultEditorLevel" LevelName="DefaultEditorLevel"
isSubScene="false" isSubScene="false"
description="An empty room" description="An empty room"
staticObjectAssetDependency0="@Asset=FPSGameplay:station01" staticObjectAssetDependency0="@Asset=Prototyping:FloorGray"
VersionId="1" /> VersionId="1" />

View file

@ -5,6 +5,7 @@ new Scene(EditorTemplateLevel) {
isSubScene = "0"; isSubScene = "0";
isEditing = "0"; isEditing = "0";
isDirty = "0"; isDirty = "0";
EditPostEffects = "0";
cdTrack = "2"; cdTrack = "2";
CTF_scoreLimit = "5"; CTF_scoreLimit = "5";
Enabled = "1"; Enabled = "1";
@ -35,6 +36,7 @@ new Scene(EditorTemplateLevel) {
Material = "BlankSkyMat"; Material = "BlankSkyMat";
drawBottom = "0"; drawBottom = "0";
fogBandHeight = "0"; fogBandHeight = "0";
dirtyGameObject = "0";
position = "0 0 0"; position = "0 0 0";
rotation = "1 0 0 0"; rotation = "1 0 0 0";
scale = "1 1 1"; scale = "1 1 1";
@ -48,8 +50,6 @@ new Scene(EditorTemplateLevel) {
ambient = "0.337255 0.533333 0.619608 1"; ambient = "0.337255 0.533333 0.619608 1";
brightness = "1"; brightness = "1";
castShadows = "1"; castShadows = "1";
staticRefreshFreq = "250";
dynamicRefreshFreq = "8";
coronaEnabled = "1"; coronaEnabled = "1";
coronaScale = "0.5"; coronaScale = "0.5";
coronaTint = "1 1 1 1"; coronaTint = "1 1 1 1";
@ -68,6 +68,7 @@ new Scene(EditorTemplateLevel) {
representedInLightmap = "0"; representedInLightmap = "0";
shadowDarkenColor = "0 0 0 -1"; shadowDarkenColor = "0 0 0 -1";
includeLightmappedGeometryInShadow = "0"; includeLightmappedGeometryInShadow = "0";
dirtyGameObject = "0";
position = "0 0 0"; position = "0 0 0";
rotation = "1 0 0 0"; rotation = "1 0 0 0";
scale = "1 1 1"; scale = "1 1 1";
@ -75,6 +76,7 @@ new Scene(EditorTemplateLevel) {
canSaveDynamicFields = "1"; canSaveDynamicFields = "1";
bias = "0.1"; bias = "0.1";
Blur = "1"; Blur = "1";
dynamicRefreshFreq = "8";
Enabled = "1"; Enabled = "1";
height = "1024"; height = "1024";
lightBleedFactor = "0.8"; lightBleedFactor = "0.8";
@ -82,13 +84,15 @@ new Scene(EditorTemplateLevel) {
pointShadowType = "PointShadowType_Paraboloid"; pointShadowType = "PointShadowType_Paraboloid";
shadowBox = "-100 -100 -100 100 100 100"; shadowBox = "-100 -100 -100 100 100 100";
splitFadeDistances = "1 1 1 1"; splitFadeDistances = "1 1 1 1";
staticRefreshFreq = "250";
width = "3072"; width = "3072";
}; };
new GroundPlane() { new GroundPlane() {
squareSize = "128"; squareSize = "128";
scaleU = "25"; scaleU = "25";
scaleV = "25"; scaleV = "25";
Material = "Grid_512_Grey"; MaterialAsset = "Prototyping:FloorGray";
dirtyGameObject = "0";
canSave = "1"; canSave = "1";
canSaveDynamicFields = "1"; canSaveDynamicFields = "1";
Enabled = "1"; Enabled = "1";
@ -99,12 +103,12 @@ new Scene(EditorTemplateLevel) {
new Skylight() { new Skylight() {
Enabled = "1"; Enabled = "1";
ReflectionMode = "Baked Cubemap"; ReflectionMode = "Baked Cubemap";
dirtyGameObject = "0";
position = "1.37009 -5.23561 46.5817"; position = "1.37009 -5.23561 46.5817";
rotation = "1 0 0 0"; rotation = "1 0 0 0";
canSave = "1"; canSave = "1";
canSaveDynamicFields = "1"; canSaveDynamicFields = "1";
persistentId = "d5eb3afb-dced-11e9-a423-bb0e346e3870"; persistentId = "d5eb3afb-dced-11e9-a423-bb0e346e3870";
reflectionPath = "tools/levels/BlankRoom/probes/";
}; };
}; };
//--- OBJECT WRITE END --- //--- OBJECT WRITE END ---

View file

@ -88,7 +88,7 @@ new Scene(EditorTemplateLevel) {
squareSize = "128"; squareSize = "128";
scaleU = "25"; scaleU = "25";
scaleV = "25"; scaleV = "25";
Material = "Grid_512_Grey"; Material = "Prototyping:FloorGray";
canSave = "1"; canSave = "1";
canSaveDynamicFields = "1"; canSaveDynamicFields = "1";
Enabled = "1"; Enabled = "1";
@ -104,7 +104,6 @@ new Scene(EditorTemplateLevel) {
canSave = "1"; canSave = "1";
canSaveDynamicFields = "1"; canSaveDynamicFields = "1";
persistentId = "d5eb3afb-dced-11e9-a423-bb0e346e3870"; persistentId = "d5eb3afb-dced-11e9-a423-bb0e346e3870";
reflectionPath = "tools/levels/BlankRoom/probes/";
}; };
}; };
//--- OBJECT WRITE END --- //--- OBJECT WRITE END ---