2
0
Эх сурвалжийг харах

cleanups for decal and mesh road, and the meshroad and river editors

Azaezel 7 жил өмнө
parent
commit
1b548e5304

+ 11 - 11
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;

+ 3 - 3
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 );
    }

+ 3 - 3
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 );
    }

+ 24 - 38
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();