Removed hard coded directory paths
- Removed references to core directory. - Switch some references to tools directory - Added preferences variables where appropriate
|
|
@ -330,7 +330,12 @@ void Forest::createNewFile()
|
||||||
|
|
||||||
// We need to construct a default file name
|
// We need to construct a default file name
|
||||||
String missionName( Con::getVariable( "$Client::MissionFile" ) );
|
String missionName( Con::getVariable( "$Client::MissionFile" ) );
|
||||||
missionName.replace( "tools/levels", "levels" );
|
String levelDirectory( Con::getVariable( "$pref::Directories::Level" ) );
|
||||||
|
if ( levelDirectory.isEmpty() )
|
||||||
|
{
|
||||||
|
levelDirectory = "levels";
|
||||||
|
}
|
||||||
|
missionName.replace( "tools/levels", levelDirectory );
|
||||||
missionName = Platform::makeRelativePathName(missionName, Platform::getMainDotCsDir());
|
missionName = Platform::makeRelativePathName(missionName, Platform::getMainDotCsDir());
|
||||||
|
|
||||||
Torque::Path basePath( missionName );
|
Torque::Path basePath( missionName );
|
||||||
|
|
|
||||||
|
|
@ -39,9 +39,9 @@ ConsoleDocClass( GuiSwatchButtonCtrl,
|
||||||
"A swatch button is a push button that uses its color field to designate the color drawn over an image, on top of a button.\n\n"
|
"A swatch button is a push button that uses its color field to designate the color drawn over an image, on top of a button.\n\n"
|
||||||
|
|
||||||
"The color itself is a float value stored inside the GuiSwatchButtonCtrl::color field. The texture path that represents\n"
|
"The color itself is a float value stored inside the GuiSwatchButtonCtrl::color field. The texture path that represents\n"
|
||||||
"the image underlying the color is stored inside the GuiSwatchButtonCtrl::bitmap field.\n"
|
"the image underlying the color is stored inside the GuiSwatchButtonCtrl::gridBitmap field.\n"
|
||||||
"The default value assigned toGuiSwatchButtonCtrl::color is \"1 1 1 1\"( White ). The default/fallback image assigned to \n"
|
"The default value assigned toGuiSwatchButtonCtrl::color is \"1 1 1 1\"( White ). The default/fallback image assigned to \n"
|
||||||
"GuiSwatchButtonCtrl::bitmap is \"core/art/gui/images/transp_grid\".\n\n"
|
"GuiSwatchButtonCtrl::gridBitmap is \"tools/gui/images/transp_grid\".\n\n"
|
||||||
|
|
||||||
"@tsexample\n"
|
"@tsexample\n"
|
||||||
"// Create a GuiSwatchButtonCtrl that calls randomFunction with its current color when clicked\n"
|
"// Create a GuiSwatchButtonCtrl that calls randomFunction with its current color when clicked\n"
|
||||||
|
|
@ -65,11 +65,15 @@ GuiSwatchButtonCtrl::GuiSwatchButtonCtrl()
|
||||||
|
|
||||||
static StringTableEntry sProfile = StringTable->insert( "profile" );
|
static StringTableEntry sProfile = StringTable->insert( "profile" );
|
||||||
setDataField( sProfile, NULL, "GuiInspectorSwatchButtonProfile" );
|
setDataField( sProfile, NULL, "GuiInspectorSwatchButtonProfile" );
|
||||||
|
|
||||||
|
mGridBitmap = "tools/gui/images/transp_grid";
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiSwatchButtonCtrl::initPersistFields()
|
void GuiSwatchButtonCtrl::initPersistFields()
|
||||||
{
|
{
|
||||||
addField( "color", TypeColorF, Offset( mSwatchColor, GuiSwatchButtonCtrl ), "The foreground color of GuiSwatchButtonCtrl" );
|
addField( "color", TypeColorF, Offset( mSwatchColor, GuiSwatchButtonCtrl ), "The foreground color of GuiSwatchButtonCtrl" );
|
||||||
|
|
||||||
|
addField( "gridBitmap", TypeString, Offset( mGridBitmap, GuiSwatchButtonCtrl ), "The bitmap used for the transparent grid" );
|
||||||
|
|
||||||
Parent::initPersistFields();
|
Parent::initPersistFields();
|
||||||
}
|
}
|
||||||
|
|
@ -80,7 +84,7 @@ bool GuiSwatchButtonCtrl::onWake()
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( mGrid.isNull() )
|
if ( mGrid.isNull() )
|
||||||
mGrid.set( "core/art/gui/images/transp_grid", &GFXDefaultGUIProfile, avar("%s() - mGrid (line %d)", __FUNCTION__, __LINE__) );
|
mGrid.set( mGridBitmap, &GFXDefaultGUIProfile, avar("%s() - mGrid (line %d)", __FUNCTION__, __LINE__) );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,9 @@ class GuiSwatchButtonCtrl : public GuiButtonBaseCtrl
|
||||||
/// The color to display on the button.
|
/// The color to display on the button.
|
||||||
ColorF mSwatchColor;
|
ColorF mSwatchColor;
|
||||||
|
|
||||||
|
/// Bitmap used for mGrid
|
||||||
|
String mGridBitmap;
|
||||||
|
|
||||||
/// Background texture that will show through with transparent colors.
|
/// Background texture that will show through with transparent colors.
|
||||||
GFXTexHandle mGrid;
|
GFXTexHandle mGrid;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -89,9 +89,6 @@ bool GuiGradientSwatchCtrl::onWake()
|
||||||
if ( !Parent::onWake() )
|
if ( !Parent::onWake() )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( mPointer.isNull() )
|
|
||||||
mPointer.set( "core/art/gui/images/arrowbtn_d", &GFXDefaultGUIProfile, avar("%s() - mGrid (line %d)", __FUNCTION__, __LINE__) );
|
|
||||||
|
|
||||||
char* altCommand = Con::getReturnBuffer(512);
|
char* altCommand = Con::getReturnBuffer(512);
|
||||||
dSprintf( altCommand, 512, "%s(%i.color, \"%i.setColor\");", mColorFunction, getId(), getId() );
|
dSprintf( altCommand, 512, "%s(%i.color, \"%i.setColor\");", mColorFunction, getId(), getId() );
|
||||||
setField( "altCommand", altCommand );
|
setField( "altCommand", altCommand );
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,6 @@ public:
|
||||||
void onRender(Point2I offset, const RectI &updateRect);
|
void onRender(Point2I offset, const RectI &updateRect);
|
||||||
bool onWake();
|
bool onWake();
|
||||||
protected:
|
protected:
|
||||||
GFXTexHandle mPointer;
|
|
||||||
StringTableEntry mColorFunction;
|
StringTableEntry mColorFunction;
|
||||||
};
|
};
|
||||||
//----------------------------
|
//----------------------------
|
||||||
|
|
|
||||||
|
|
@ -1538,7 +1538,7 @@ GuiControl* GuiInspectorTypeBitMask32Helper::constructEditControl()
|
||||||
mButton->setField( "Command", szBuffer );
|
mButton->setField( "Command", szBuffer );
|
||||||
mButton->setField( "buttonType", "ToggleButton" );
|
mButton->setField( "buttonType", "ToggleButton" );
|
||||||
mButton->setDataField( StringTable->insert("Profile"), NULL, "GuiInspectorButtonProfile" );
|
mButton->setDataField( StringTable->insert("Profile"), NULL, "GuiInspectorButtonProfile" );
|
||||||
mButton->setBitmap( "core/art/gui/images/arrowBtn" );
|
mButton->setBitmap( "tools/gui/images/arrowBtn" );
|
||||||
mButton->setStateOn( true );
|
mButton->setStateOn( true );
|
||||||
mButton->setExtent( 16, 16 );
|
mButton->setExtent( 16, 16 );
|
||||||
mButton->registerObject();
|
mButton->registerObject();
|
||||||
|
|
|
||||||
|
|
@ -127,7 +127,7 @@ void PostEffectVis::open( PostEffect *pfx )
|
||||||
bmpCtrl->setSizing( GuiControl::horizResizeWidth, GuiControl::vertResizeHeight );
|
bmpCtrl->setSizing( GuiControl::horizResizeWidth, GuiControl::vertResizeHeight );
|
||||||
bmpCtrl->setExtent( 341, 181 );
|
bmpCtrl->setExtent( 341, 181 );
|
||||||
bmpCtrl->setDataField( StringTable->insert( "wrap" ), NULL, "1" );
|
bmpCtrl->setDataField( StringTable->insert( "wrap" ), NULL, "1" );
|
||||||
bmpCtrl->setBitmap( "core/art/gui/images/transp_grid" );
|
bmpCtrl->setBitmap( "tools/gui/images/transp_grid" );
|
||||||
bmpCtrl->registerObject();
|
bmpCtrl->registerObject();
|
||||||
winCtrl->addObject( bmpCtrl );
|
winCtrl->addObject( bmpCtrl );
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -864,8 +864,13 @@ bool TerrainBlock::onAdd()
|
||||||
if ( mTerrFileName.isEmpty() )
|
if ( mTerrFileName.isEmpty() )
|
||||||
{
|
{
|
||||||
mTerrFileName = Con::getVariable( "$Client::MissionFile" );
|
mTerrFileName = Con::getVariable( "$Client::MissionFile" );
|
||||||
mTerrFileName.replace("tools/levels/", "art/terrains/");
|
String terrainDirectory( Con::getVariable( "$pref::Directories::Terrain" ) );
|
||||||
mTerrFileName.replace("levels/", "art/terrains/");
|
if ( terrainDirectory.isEmpty() )
|
||||||
|
{
|
||||||
|
terrainDirectory = "art/terrains/";
|
||||||
|
}
|
||||||
|
mTerrFileName.replace("tools/levels/", terrainDirectory);
|
||||||
|
mTerrFileName.replace("levels/", terrainDirectory);
|
||||||
|
|
||||||
Vector<String> materials;
|
Vector<String> materials;
|
||||||
materials.push_back( "warning_material" );
|
materials.push_back( "warning_material" );
|
||||||
|
|
|
||||||
|
|
@ -744,7 +744,12 @@ void TerrainFile::create( String *inOutFilename,
|
||||||
if ( !basePath.getExtension().equal("mis") )
|
if ( !basePath.getExtension().equal("mis") )
|
||||||
{
|
{
|
||||||
// Use the default path and filename
|
// Use the default path and filename
|
||||||
basePath.setPath( "art/terrains" );
|
String terrainDirectory( Con::getVariable( "$pref::Directories::Terrain" ) );
|
||||||
|
if ( terrainDirectory.isEmpty() )
|
||||||
|
{
|
||||||
|
terrainDirectory = "art/terrains";
|
||||||
|
}
|
||||||
|
basePath.setPath( terrainDirectory );
|
||||||
basePath.setFileName( "terrain" );
|
basePath.setFileName( "terrain" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -50,8 +50,13 @@ ConsoleStaticMethod( TerrainBlock, createNew, S32, 5, 5,
|
||||||
// rename it themselves in their file browser. The main reason for this is so we can easily increment for ourselves;
|
// rename it themselves in their file browser. The main reason for this is so we can easily increment for ourselves;
|
||||||
// and because its too easy to rename the terrain object and forget to take care of the terrain filename afterwards.
|
// and because its too easy to rename the terrain object and forget to take care of the terrain filename afterwards.
|
||||||
FileName terrFileName( Con::getVariable("$Client::MissionFile") );
|
FileName terrFileName( Con::getVariable("$Client::MissionFile") );
|
||||||
terrFileName.replace("tools/levels/", "art/terrains/");
|
String terrainDirectory( Con::getVariable( "$pref::Directories::Terrain" ) );
|
||||||
terrFileName.replace("levels/", "art/terrains/");
|
if ( terrainDirectory.isEmpty() )
|
||||||
|
{
|
||||||
|
terrainDirectory = "art/terrains/";
|
||||||
|
}
|
||||||
|
terrFileName.replace("tools/levels/", terrainDirectory);
|
||||||
|
terrFileName.replace("levels/", terrainDirectory);
|
||||||
|
|
||||||
TerrainFile::create( &terrFileName, resolution, materials );
|
TerrainFile::create( &terrFileName, resolution, materials );
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -402,7 +402,7 @@ F32 MeshFit::maxDot( const VectorF& v ) const
|
||||||
// Best-fit oriented bounding box
|
// Best-fit oriented bounding box
|
||||||
void MeshFit::addBox( const Point3F& sides, const MatrixF& mat )
|
void MeshFit::addBox( const Point3F& sides, const MatrixF& mat )
|
||||||
{
|
{
|
||||||
TSMesh* mesh = initMeshFromFile( "core/art/shapes/unit_cube.dts" );
|
TSMesh* mesh = initMeshFromFile( TSShapeConstructor::getCubeShapePath() );
|
||||||
if ( !mesh )
|
if ( !mesh )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
@ -431,7 +431,7 @@ void MeshFit::fitOBB()
|
||||||
// Best-fit sphere
|
// Best-fit sphere
|
||||||
void MeshFit::addSphere( F32 radius, const Point3F& center )
|
void MeshFit::addSphere( F32 radius, const Point3F& center )
|
||||||
{
|
{
|
||||||
TSMesh* mesh = initMeshFromFile( "core/art/shapes/unit_sphere.dts" );
|
TSMesh* mesh = initMeshFromFile( TSShapeConstructor::getSphereShapePath() );
|
||||||
if ( !mesh )
|
if ( !mesh )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
@ -460,7 +460,7 @@ void MeshFit::fitSphere()
|
||||||
// Best-fit capsule
|
// Best-fit capsule
|
||||||
void MeshFit::addCapsule( F32 radius, F32 height, const MatrixF& mat )
|
void MeshFit::addCapsule( F32 radius, F32 height, const MatrixF& mat )
|
||||||
{
|
{
|
||||||
TSMesh* mesh = initMeshFromFile( "core/art/shapes/unit_capsule.dts" );
|
TSMesh* mesh = initMeshFromFile( TSShapeConstructor::getCapsuleShapePath() );
|
||||||
if ( !mesh )
|
if ( !mesh )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,10 @@ EndImplementEnumType;
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
String TSShapeConstructor::smCapsuleShapePath("core/art/shapes/unit_capsule.dts");
|
||||||
|
String TSShapeConstructor::smCubeShapePath("core/art/shapes/unit_cube.dts");
|
||||||
|
String TSShapeConstructor::smSphereShapePath("core/art/shapes/unit_sphere.dts");
|
||||||
|
|
||||||
ResourceRegisterPostLoadSignal< TSShape > TSShapeConstructor::_smAutoLoad( &TSShapeConstructor::_onTSShapeLoaded );
|
ResourceRegisterPostLoadSignal< TSShape > TSShapeConstructor::_smAutoLoad( &TSShapeConstructor::_onTSShapeLoaded );
|
||||||
ResourceRegisterUnloadSignal< TSShape > TSShapeConstructor::_smAutoUnload( &TSShapeConstructor::_onTSShapeUnloaded );
|
ResourceRegisterUnloadSignal< TSShape > TSShapeConstructor::_smAutoUnload( &TSShapeConstructor::_onTSShapeUnloaded );
|
||||||
|
|
||||||
|
|
@ -280,6 +284,23 @@ void TSShapeConstructor::initPersistFields()
|
||||||
Parent::initPersistFields();
|
Parent::initPersistFields();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TSShapeConstructor::consoleInit()
|
||||||
|
{
|
||||||
|
Parent::consoleInit();
|
||||||
|
|
||||||
|
Con::addVariable( "$pref::TSShapeConstructor::CapsuleShapePath", TypeString, &TSShapeConstructor::smCapsuleShapePath,
|
||||||
|
"The file path to the capsule shape used by tsMeshFit.\n\n"
|
||||||
|
"@ingroup MeshFit\n" );
|
||||||
|
|
||||||
|
Con::addVariable( "$pref::TSShapeConstructor::CubeShapePath", TypeString, &TSShapeConstructor::smCubeShapePath,
|
||||||
|
"The file path to the cube shape used by tsMeshFit.\n\n"
|
||||||
|
"@ingroup MeshFit\n" );
|
||||||
|
|
||||||
|
Con::addVariable( "$pref::TSShapeConstructor::SphereShapePath", TypeString, &TSShapeConstructor::smSphereShapePath,
|
||||||
|
"The file path to the sphere shape used by tsMeshFit.\n\n"
|
||||||
|
"@ingroup MeshFit\n" );
|
||||||
|
}
|
||||||
|
|
||||||
TSShapeConstructor* TSShapeConstructor::findShapeConstructor(const FileName& path)
|
TSShapeConstructor* TSShapeConstructor::findShapeConstructor(const FileName& path)
|
||||||
{
|
{
|
||||||
SimGroup *group;
|
SimGroup *group;
|
||||||
|
|
|
||||||
|
|
@ -220,6 +220,11 @@ protected:
|
||||||
Vector<FileName> mSequences;
|
Vector<FileName> mSequences;
|
||||||
ChangeSet mChangeSet;
|
ChangeSet mChangeSet;
|
||||||
|
|
||||||
|
// Paths to shapes used by MeshFit
|
||||||
|
static String smCapsuleShapePath;
|
||||||
|
static String smCubeShapePath;
|
||||||
|
static String smSphereShapePath;
|
||||||
|
|
||||||
static bool addSequenceFromField( void *obj, const char *index, const char *data );
|
static bool addSequenceFromField( void *obj, const char *index, const char *data );
|
||||||
|
|
||||||
static void _onTSShapeLoaded( Resource< TSShape >& shape );
|
static void _onTSShapeLoaded( Resource< TSShape >& shape );
|
||||||
|
|
@ -250,6 +255,7 @@ public:
|
||||||
|
|
||||||
DECLARE_CONOBJECT(TSShapeConstructor);
|
DECLARE_CONOBJECT(TSShapeConstructor);
|
||||||
static void initPersistFields();
|
static void initPersistFields();
|
||||||
|
static void consoleInit();
|
||||||
static TSShapeConstructor* findShapeConstructor(const FileName& path);
|
static TSShapeConstructor* findShapeConstructor(const FileName& path);
|
||||||
|
|
||||||
bool onAdd();
|
bool onAdd();
|
||||||
|
|
@ -261,6 +267,13 @@ public:
|
||||||
|
|
||||||
void notifyShapeChanged();
|
void notifyShapeChanged();
|
||||||
|
|
||||||
|
/// @name Shape paths for MeshFit
|
||||||
|
///@{
|
||||||
|
static const String& getCapsuleShapePath() { return smCapsuleShapePath; }
|
||||||
|
static const String& getCubeShapePath() { return smCubeShapePath; }
|
||||||
|
static const String& getSphereShapePath() { return smSphereShapePath; }
|
||||||
|
///@}
|
||||||
|
|
||||||
TSShape* getShape() const { return mShape; }
|
TSShape* getShape() const { return mShape; }
|
||||||
const String& getShapePath() const { return mShapePath; }
|
const String& getShapePath() const { return mShapePath; }
|
||||||
|
|
||||||
|
|
|
||||||
BIN
Templates/Empty PhysX/game/tools/gui/images/arrowbtn_d.png
Normal file
|
After Width: | Height: | Size: 204 B |
BIN
Templates/Empty PhysX/game/tools/gui/images/arrowbtn_n.png
Normal file
|
After Width: | Height: | Size: 203 B |
BIN
Templates/Empty PhysX/game/tools/gui/images/transp_grid.png
Normal file
|
After Width: | Height: | Size: 208 B |
BIN
Templates/Empty/game/tools/gui/images/arrowbtn_d.png
Normal file
|
After Width: | Height: | Size: 204 B |
BIN
Templates/Empty/game/tools/gui/images/arrowbtn_n.png
Normal file
|
After Width: | Height: | Size: 203 B |
BIN
Templates/Empty/game/tools/gui/images/transp_grid.png
Normal file
|
After Width: | Height: | Size: 208 B |
BIN
Templates/Full PhysX/game/tools/gui/images/arrowbtn_d.png
Normal file
|
After Width: | Height: | Size: 204 B |
BIN
Templates/Full PhysX/game/tools/gui/images/arrowbtn_n.png
Normal file
|
After Width: | Height: | Size: 203 B |
BIN
Templates/Full PhysX/game/tools/gui/images/transp_grid.png
Normal file
|
After Width: | Height: | Size: 208 B |
BIN
Templates/Full/game/tools/gui/images/arrowbtn_d.png
Normal file
|
After Width: | Height: | Size: 204 B |
BIN
Templates/Full/game/tools/gui/images/arrowbtn_n.png
Normal file
|
After Width: | Height: | Size: 203 B |
BIN
Templates/Full/game/tools/gui/images/transp_grid.png
Normal file
|
After Width: | Height: | Size: 208 B |