mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-02-13 11:43:49 +00:00
add a pasteUp and pasteDown pallet
This commit is contained in:
parent
561c201b88
commit
25ea164a1f
5 changed files with 118 additions and 5 deletions
|
|
@ -858,6 +858,23 @@ void HydraulicErosionAction::process(Selection* sel, const Gui3DMouseEvent&, boo
|
|||
|
||||
}
|
||||
|
||||
void TerrainScratchPad::addTile(F32 height, U8 material)
|
||||
{
|
||||
mContents.push_back(new gridStub(height, material));
|
||||
|
||||
mBottom = mMin(height, mBottom);
|
||||
mTop = mMax(height, mTop);
|
||||
};
|
||||
|
||||
void TerrainScratchPad::clear()
|
||||
{
|
||||
for (U32 i = 0; i < mContents.size(); i++)
|
||||
delete(mContents[i]);
|
||||
mContents.clear();
|
||||
mBottom = F32_MAX;
|
||||
mTop = F32_MIN;
|
||||
}
|
||||
|
||||
void copyAction::process(Selection* sel, const Gui3DMouseEvent&, bool selChanged, Type type)
|
||||
{
|
||||
gTerrainScratchPad.clear();
|
||||
|
|
@ -872,6 +889,15 @@ void copyAction::process(Selection* sel, const Gui3DMouseEvent&, bool selChanged
|
|||
|
||||
void pasteAction::process(Selection* sel, const Gui3DMouseEvent&, bool selChanged, Type type)
|
||||
{
|
||||
if (gTerrainScratchPad.size() == 0)
|
||||
return;
|
||||
|
||||
if (gTerrainScratchPad.size() != sel->size())
|
||||
return;
|
||||
|
||||
if (type != Begin)
|
||||
return;
|
||||
|
||||
for (U32 i = 0; i < sel->size(); i++)
|
||||
{
|
||||
if (isValid((*sel)[i]))
|
||||
|
|
@ -886,6 +912,66 @@ void pasteAction::process(Selection* sel, const Gui3DMouseEvent&, bool selChange
|
|||
mTerrainEditor->scheduleMaterialUpdate();
|
||||
}
|
||||
|
||||
void pasteUpAction::process(Selection* sel, const Gui3DMouseEvent&, bool selChanged, Type type)
|
||||
{
|
||||
if (gTerrainScratchPad.size() == 0)
|
||||
return;
|
||||
|
||||
if (gTerrainScratchPad.size() != sel->size())
|
||||
return;
|
||||
|
||||
if (type != Begin)
|
||||
return;
|
||||
F32 floor = F32_MAX;
|
||||
for (U32 i = 0; i < sel->size(); i++)
|
||||
{
|
||||
floor = mMin((*sel)[i].mHeight, floor);
|
||||
}
|
||||
for (U32 i = 0; i < sel->size(); i++)
|
||||
{
|
||||
if (isValid((*sel)[i]))
|
||||
{
|
||||
mTerrainEditor->getUndoSel()->add((*sel)[i]);
|
||||
(*sel)[i].mHeight = gTerrainScratchPad[i]->mHeight - gTerrainScratchPad.mBottom + floor;
|
||||
(*sel)[i].mMaterial = gTerrainScratchPad[i]->mMaterial;
|
||||
mTerrainEditor->setGridInfo((*sel)[i]);
|
||||
}
|
||||
}
|
||||
mTerrainEditor->scheduleGridUpdate();
|
||||
mTerrainEditor->scheduleMaterialUpdate();
|
||||
}
|
||||
|
||||
void pasteDownAction::process(Selection* sel, const Gui3DMouseEvent&, bool selChanged, Type type)
|
||||
{
|
||||
if (gTerrainScratchPad.size() == 0)
|
||||
return;
|
||||
|
||||
if (gTerrainScratchPad.size() != sel->size())
|
||||
return;
|
||||
|
||||
if (type != Begin)
|
||||
return;
|
||||
|
||||
F32 ceiling = F32_MIN;
|
||||
for (U32 i = 0; i < sel->size(); i++)
|
||||
{
|
||||
ceiling = mMax((*sel)[i].mHeight, ceiling);
|
||||
}
|
||||
|
||||
for (U32 i = 0; i < sel->size(); i++)
|
||||
{
|
||||
if (isValid((*sel)[i]))
|
||||
{
|
||||
mTerrainEditor->getUndoSel()->add((*sel)[i]);
|
||||
(*sel)[i].mHeight = gTerrainScratchPad[i]->mHeight - gTerrainScratchPad.mTop + ceiling;
|
||||
(*sel)[i].mMaterial = gTerrainScratchPad[i]->mMaterial;
|
||||
mTerrainEditor->setGridInfo((*sel)[i]);
|
||||
}
|
||||
}
|
||||
mTerrainEditor->scheduleGridUpdate();
|
||||
mTerrainEditor->scheduleMaterialUpdate();
|
||||
}
|
||||
|
||||
IMPLEMENT_CONOBJECT( TerrainSmoothAction );
|
||||
|
||||
ConsoleDocClass( TerrainSmoothAction,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue