mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-13 23:54:35 +00:00
Merge pull request #415 from Areloch/GroundPlaneAssetify
Converts GroundPlane to utilize assets
This commit is contained in:
commit
7dc6fc8abf
22 changed files with 278 additions and 129 deletions
|
|
@ -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);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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_
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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 "
|
||||||
|
|
@ -589,4 +669,4 @@ DefineEngineMethod( GroundPlane, postApply, void, (),,
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
object->inspectPostApply();
|
object->inspectPostApply();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
<MaterialAsset
|
||||||
|
canSave="true"
|
||||||
|
canSaveDynamicFields="true"
|
||||||
|
AssetName="NoMaterial"
|
||||||
|
scriptFile="@assetFile=NoMaterial.cs"
|
||||||
|
materialDefinitionName="NoMaterial" />
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
//--- OBJECT WRITE BEGIN ---
|
||||||
|
singleton Material(NoMaterial) {
|
||||||
|
mapTo="NoMaterial";
|
||||||
|
DiffuseMap = "core/rendering/images/warnMat";
|
||||||
|
};
|
||||||
|
//--- OBJECT WRITE END ---
|
||||||
|
|
@ -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 ---
|
||||||
|
|
|
||||||
|
|
@ -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" />
|
||||||
|
|
|
||||||
|
|
@ -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" />
|
||||||
|
|
|
||||||
|
|
@ -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" />
|
||||||
|
|
|
||||||
|
|
@ -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" />
|
||||||
|
|
|
||||||
|
|
@ -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" />
|
||||||
|
|
|
||||||
|
|
@ -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" />
|
||||||
|
|
|
||||||
|
|
@ -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" />
|
||||||
|
|
|
||||||
|
|
@ -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" />
|
||||||
|
|
|
||||||
|
|
@ -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" />
|
||||||
|
|
|
||||||
|
|
@ -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" />
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
|
||||||
|
|
@ -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" />
|
||||||
|
|
|
||||||
|
|
@ -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 ---
|
||||||
|
|
|
||||||
|
|
@ -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 ---
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue