From 1b548e5304984f598649715bba7006cb08bf68a7 Mon Sep 17 00:00:00 2001 From: Azaezel Date: Wed, 14 Mar 2018 17:43:03 -0500 Subject: [PATCH] cleanups for decal and mesh road, and the meshroad and river editors --- Engine/source/environment/decalRoad.cpp | 22 +++---- .../editors/guiMeshRoadEditorCtrl.cpp | 6 +- .../editors/guiRiverEditorCtrl.cpp | 6 +- Engine/source/environment/meshRoad.cpp | 60 +++++++------------ 4 files changed, 40 insertions(+), 54 deletions(-) diff --git a/Engine/source/environment/decalRoad.cpp b/Engine/source/environment/decalRoad.cpp index edf4c725b..00359f7bb 100644 --- a/Engine/source/environment/decalRoad.cpp +++ b/Engine/source/environment/decalRoad.cpp @@ -1265,7 +1265,7 @@ void DecalRoad::_generateEdges() // for ( U32 i = 0; i < mEdges.size(); i++ ) { - RoadEdge *edge = &mEdges[i]; + edge = &mEdges[i]; edge->p0 = edge->p1 - edge->rvec * edge->width * 0.5f; edge->p2 = edge->p1 + edge->rvec * edge->width * 0.5f; _getTerrainHeight( edge->p0 ); @@ -1467,20 +1467,20 @@ void DecalRoad::_captureVerts() for ( U32 i = 0; i < clipperList.size(); i++ ) { ClippedPolyList *clipper = &clipperList[i]; - RoadEdge &edge = mEdges[i]; - RoadEdge &nextEdge = mEdges[i+1]; + edge = &mEdges[i]; + nextEdge = &mEdges[i+1]; - VectorF segFvec = nextEdge.p1 - edge.p1; + VectorF segFvec = nextEdge->p1 - edge->p1; F32 segLen = segFvec.len(); segFvec.normalize(); F32 texLen = segLen / mTextureLength; texEnd = texStart + texLen; - BiQuadToSqr quadToSquare( Point2F( edge.p0.x, edge.p0.y ), - Point2F( edge.p2.x, edge.p2.y ), - Point2F( nextEdge.p2.x, nextEdge.p2.y ), - Point2F( nextEdge.p0.x, nextEdge.p0.y ) ); + BiQuadToSqr quadToSquare( Point2F( edge->p0.x, edge->p0.y ), + Point2F( edge->p2.x, edge->p2.y ), + Point2F( nextEdge->p2.x, nextEdge->p2.y ), + Point2F( nextEdge->p0.x, nextEdge->p0.y ) ); // if ( i % mSegmentsPerBatch == 0 ) @@ -1572,12 +1572,12 @@ void DecalRoad::_captureVerts() Box3F box; for ( U32 i = 0; i < mBatches.size(); i++ ) { - const RoadBatch &batch = mBatches[i]; + batch = &mBatches[i]; if ( i == 0 ) - box = batch.bounds; + box = batch->bounds; else - box.intersect( batch.bounds ); + box.intersect( batch->bounds ); } mWorldBox = box; diff --git a/Engine/source/environment/editors/guiMeshRoadEditorCtrl.cpp b/Engine/source/environment/editors/guiMeshRoadEditorCtrl.cpp index e1a612b00..d36fb5cd9 100644 --- a/Engine/source/environment/editors/guiMeshRoadEditorCtrl.cpp +++ b/Engine/source/environment/editors/guiMeshRoadEditorCtrl.cpp @@ -1132,11 +1132,11 @@ void GuiMeshRoadEditorCtrl::setSelectedNode( S32 node ) mSelNode = node; if ( mSelNode != -1 ) { - const MeshRoadNode &node = mSelRoad->mNodes[mSelNode]; + const MeshRoadNode &curNode = mSelRoad->mNodes[mSelNode]; MatrixF objMat = mSelRoad->getNodeTransform(mSelNode); - Point3F objScale( node.width, 1.0f, node.depth ); - Point3F worldPos = node.point; + Point3F objScale(curNode.width, 1.0f, curNode.depth ); + Point3F worldPos = curNode.point; mGizmo->set( objMat, worldPos, objScale ); } diff --git a/Engine/source/environment/editors/guiRiverEditorCtrl.cpp b/Engine/source/environment/editors/guiRiverEditorCtrl.cpp index 01ab745a8..103d6e380 100644 --- a/Engine/source/environment/editors/guiRiverEditorCtrl.cpp +++ b/Engine/source/environment/editors/guiRiverEditorCtrl.cpp @@ -1277,11 +1277,11 @@ void GuiRiverEditorCtrl::setSelectedNode( S32 node ) mSelNode = node; if ( mSelNode != -1 ) { - const RiverNode &node = mSelRiver->mNodes[mSelNode]; + const RiverNode &curNode = mSelRiver->mNodes[mSelNode]; MatrixF objMat = mSelRiver->getNodeTransform(mSelNode); - Point3F objScale( node.width, 1.0f, node.depth ); - Point3F worldPos = node.point; + Point3F objScale(curNode.width, 1.0f, curNode.depth ); + Point3F worldPos = curNode.point; mGizmo->set( objMat, worldPos, objScale ); } diff --git a/Engine/source/environment/meshRoad.cpp b/Engine/source/environment/meshRoad.cpp index 0d523f9a7..1ed6768fb 100644 --- a/Engine/source/environment/meshRoad.cpp +++ b/Engine/source/environment/meshRoad.cpp @@ -1681,54 +1681,40 @@ void MeshRoad::_generateSlices() } } } - - // - // Calculate uvec, fvec, and rvec for all slices - // - + MatrixF mat(true); - - for ( U32 i = 0; i < mSlices.size(); i++ ) - { - calcSliceTransform( i, mat ); - mat.getColumn( 0, &mSlices[i].rvec ); - mat.getColumn( 1, &mSlices[i].fvec ); - mat.getColumn( 2, &mSlices[i].uvec ); - } - - // - // Calculate p0/p2/pb0/pb2 for all slices - // - for ( U32 i = 0; i < mSlices.size(); i++ ) - { - MeshRoadSlice *slice = &mSlices[i]; - slice->p0 = slice->p1 - slice->rvec * slice->width * 0.5f; - slice->p2 = slice->p1 + slice->rvec * slice->width * 0.5f; - slice->pb0 = slice->p0 - slice->uvec * slice->depth; - slice->pb2 = slice->p2 - slice->uvec * slice->depth; - } - - // Generate the object/world bounds Box3F box; for ( U32 i = 0; i < mSlices.size(); i++ ) { - const MeshRoadSlice &slice = mSlices[i]; + // Calculate uvec, fvec, and rvec for all slices + calcSliceTransform( i, mat ); + MeshRoadSlice *slicePtr = &mSlices[i]; + mat.getColumn( 0, &slicePtr->rvec ); + mat.getColumn( 1, &slicePtr->fvec ); + mat.getColumn( 2, &slicePtr->uvec ); + // Calculate p0/p2/pb0/pb2 for all slices + slicePtr->p0 = slicePtr->p1 - slicePtr->rvec * slicePtr->width * 0.5f; + slicePtr->p2 = slicePtr->p1 + slicePtr->rvec * slicePtr->width * 0.5f; + slicePtr->pb0 = slicePtr->p0 - slicePtr->uvec * slicePtr->depth; + slicePtr->pb2 = slicePtr->p2 - slicePtr->uvec * slicePtr->depth; + + // Generate or extend the object/world bounds if ( i == 0 ) { - box.minExtents = slice.p0; - box.maxExtents = slice.p2; - box.extend( slice.pb0 ); - box.extend( slice.pb2 ); + box.minExtents = slicePtr->p0; + box.maxExtents = slicePtr->p2; + box.extend(slicePtr->pb0 ); + box.extend(slicePtr->pb2 ); } else { - box.extend( slice.p0 ); - box.extend( slice.p2 ); - box.extend( slice.pb0 ); - box.extend( slice.pb2 ); + box.extend(slicePtr->p0 ); + box.extend(slicePtr->p2 ); + box.extend(slicePtr->pb0 ); + box.extend(slicePtr->pb2 ); } - } + } mWorldBox = box; resetObjectBox();