Make tile layers editable in LevelBuilder
by Matt Harpold · in Torque Game Builder · 06/30/2006 (5:40 pm) · 0 replies
Discovered that you can't resize tile layers in the levelbuilder, which is sort of annoying, so here's a quick hack that lets you resize them. (All it does is resize the tile's based on how many tiles there are and the new size of the tile layer.
This is a bit of a hack, so YMMV!
Add this after line 520 in levelbuilderSelectionTool.cc (after maddundo = true)
and in tools/levelbuilder/scripts/levelmanagement.ed.cs Line 187:
This is a bit of a hack, so YMMV!
Add this after line 520 in levelbuilderSelectionTool.cc (after maddundo = true)
int x;
U32 tcx=0;
U32 tcy=0;
t2dVector tsize;
for (x = 0;x<mOwner->getAcquiredObjectCount();x++) {
if(mOwner->getAcquiredObject(x)->getClassName() == "t2dTileLayer") {
tcx = dynamic_cast<t2dTileLayer*> (mOwner->getAcquiredObject(x))->getTileCountX();
tcy = dynamic_cast<t2dTileLayer*> (mOwner->getAcquiredObject(x))->getTileCountY();
tsize = dynamic_cast<t2dTileLayer*> (mOwner->getAcquiredObject(x))->getSize();
dynamic_cast<t2dTileLayer*> (mOwner->getAcquiredObject(x))->setTileSize(tsize.mX/tcx, tsize.mY/tcy);
}
}and in tools/levelbuilder/scripts/levelmanagement.ed.cs Line 187:
for (%x = 0;%x<LevelBuilderToolManager::getGlobalTileMap().gettilelayercount();%x++) {
LBsaveTileLayer(%x,LevelBuilderToolManager::getGlobalTileMap().gettilelayer(%x).layerfile);
}Then, add in the functionfunction LBsaveTileLayer(%layernum,%layerFile )
{
// Check Tile-Map.
if ( !isObject(LevelBuilderToolManager::getGlobalTileMap()))
{
// Problem, so warn.
MessageBoxOK("Save Layer", "There was a problem saving the current layer!", "");
return;
}
// Fetch Tile Layer Count.
%layerCount = LevelBuilderToolManager::getGlobalTileMap().getTileLayerCount();
// Sanity!
if ( %layerCount == 0 )
{
// Problem, so warn.
MessageBoxOK("Save Layer", "There are no layers to save!", "");
// Finish Here.
return;
}
// Get Active Tile Layer.
%tileLayer = LevelBuilderToolManager::getGlobalTileMap().getTileLayer( %layernum );
// Check Layer.
if ( !isObject(%tileLayer) )
{
// Problem, so warn.
MessageBoxOK("Save Layer", "There was a problem accessing the current layer!", "");
// Finish Here.
return;
}
// Save Tile Layer.
if ( !%tileLayer.saveTileLayer( %layerFile ) )
{
// Problem, so warn.
MessageBoxOK("Save Layer", "The save failed!", "");
return;
}
// Confirm.
//MessageBoxOK("Save Layer", "The LAYER was saved successfully.", "");
//LevelBuilder::reloadTileLayers(%layerFile);
// refresh the tile map object library in the Level Builder
GuiFormManager::sendContentMessage($LBCTileMap, "", "refresh");
}