mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-19 20:24:49 +00:00
Merge pull request #63 from DavidWyand-GG/issue62-LargeDecalsDisappear
Fix for Issue #62 for Large decal disappears
This commit is contained in:
commit
59e7229088
|
|
@ -361,19 +361,28 @@ bool DecalManager::clipDecal( DecalInstance *decal, Vector<Point3F> *edgeVerts,
|
|||
mClipper.cullUnusedVerts();
|
||||
mClipper.triangulate();
|
||||
|
||||
const U32 numVerts = mClipper.mVertexList.size();
|
||||
const U32 numIndices = mClipper.mIndexList.size();
|
||||
|
||||
if ( !numVerts || !numIndices )
|
||||
return false;
|
||||
|
||||
// Fail if either of the buffer metrics exceeds our limits
|
||||
// on dynamic geometry buffers.
|
||||
if ( numVerts > smMaxVerts ||
|
||||
numIndices > smMaxIndices )
|
||||
return false;
|
||||
|
||||
if ( !decalData->skipVertexNormals )
|
||||
mClipper.generateNormals();
|
||||
|
||||
if ( mClipper.mVertexList.empty() )
|
||||
return false;
|
||||
|
||||
#ifdef DECALMANAGER_DEBUG
|
||||
mDebugPlanes.clear();
|
||||
mDebugPlanes.merge( mClipper.mPlaneList );
|
||||
#endif
|
||||
|
||||
decal->mVertCount = mClipper.mVertexList.size();
|
||||
decal->mIndxCount = mClipper.mIndexList.size();
|
||||
decal->mVertCount = numVerts;
|
||||
decal->mIndxCount = numIndices;
|
||||
|
||||
Vector<Point3F> tmpPoints;
|
||||
|
||||
|
|
|
|||
|
|
@ -394,7 +394,19 @@ void GuiDecalEditorCtrl::on3DMouseDragged(const Gui3DMouseEvent & event)
|
|||
|
||||
// Assign the appropriate changed value back to the decal.
|
||||
if ( mGizmo->getMode() == ScaleMode )
|
||||
mSELDecal->mSize = (scale.x + scale.y) * 0.5f;
|
||||
{
|
||||
// Save old size.
|
||||
const F32 oldSize = mSELDecal->mSize;
|
||||
|
||||
// Set new size.
|
||||
mSELDecal->mSize = ( scale.x + scale.y ) * 0.5f;
|
||||
|
||||
// See if the decal properly clips/projects at this size. If not,
|
||||
// stick to the old size.
|
||||
mSELEdgeVerts.clear();
|
||||
if ( !gDecalManager->clipDecal( mSELDecal, &mSELEdgeVerts ) )
|
||||
mSELDecal->mSize = oldSize;
|
||||
}
|
||||
else if ( mGizmo->getMode() == MoveMode )
|
||||
mSELDecal->mPosition = gizmoPos;
|
||||
else if ( mGizmo->getMode() == RotateMode )
|
||||
|
|
|
|||
Loading…
Reference in a new issue