#include <patch.h>
Nevrax France
Definition at line 251 of file patch.h.
Public Member Functions | |
void | buildTileTriangles (uint8 quadId, CTrianglePatch triangles[2]) const |
Data Fields | |
CPatchBlockIdent | PatchBlockId |
from what subPart of the patch those data comes from. | |
CVector | Vertices [(4+1)*(4+1)] |
evaluated Vertices of this patch. |
|
build the 2 triangles from a quad of the CPatchQuadBlock. quadId is the number of the quad, relatively to the PatchQuadBlock. Definition at line 410 of file patch.cpp. References NL_PATCH_BLOCK_MAX_QUAD, NL_PATCH_BLOCK_MAX_VERTEX, nlassert, NL3D::CPatchBlockIdent::OrderS, NL3D::CPatchBlockIdent::OrderT, PatchBlockId, NL3D::CPatchBlockIdent::PatchId, NL3D::CTrianglePatch::PatchId, s, NL3D::CPatchBlockIdent::S0, NL3D::CPatchBlockIdent::S1, t, NL3D::CPatchBlockIdent::T0, NL3D::CPatchBlockIdent::T1, NLMISC::CUV::U, uint, uint8, NLMISC::CTriangleUV::Uv0, NLMISC::CTriangleUV::Uv1, NLMISC::CTriangleUV::Uv2, NLMISC::CUV::V, NLMISC::CTriangle::V0, NLMISC::CTriangle::V1, and NLMISC::CTriangle::V2. Referenced by NL3D::CVisualCollisionEntity::getPatchTriangleUnderUs().
00411 { 00412 // copute coordinate of the tile we want. 00413 uint sd0= quadId&(NL_PATCH_BLOCK_MAX_QUAD-1); 00414 uint td0= quadId/(NL_PATCH_BLOCK_MAX_QUAD); 00415 uint sd1= sd0+1; 00416 uint td1= td0+1; 00417 uint s= PatchBlockId.S0+sd0; 00418 uint t= PatchBlockId.T0+td0; 00419 nlassert(s<PatchBlockId.S1); 00420 nlassert(t<PatchBlockId.T1); 00421 00422 // Compute UV coord. 00423 float fs0= (float)s / (float)(PatchBlockId.OrderS); 00424 float ft0= (float)t / (float)(PatchBlockId.OrderT); 00425 float fs1= (float)(s+1) / (float)(PatchBlockId.OrderS); 00426 float ft1= (float)(t+1) / (float)(PatchBlockId.OrderT); 00427 CUV uv0, uv1, uv2, uv3; 00428 uv0.U= fs0; uv0.V= ft0; 00429 uv1.U= fs0; uv1.V= ft1; 00430 uv2.U= fs1; uv2.V= ft1; 00431 uv3.U= fs1; uv3.V= ft0; 00432 00433 // get vertex coord. 00434 const CVector &p0= Vertices[sd0 + td0*NL_PATCH_BLOCK_MAX_VERTEX]; 00435 const CVector &p1= Vertices[sd0 + td1*NL_PATCH_BLOCK_MAX_VERTEX]; 00436 const CVector &p2= Vertices[sd1 + td1*NL_PATCH_BLOCK_MAX_VERTEX]; 00437 const CVector &p3= Vertices[sd1 + td0*NL_PATCH_BLOCK_MAX_VERTEX]; 00438 00439 // build triangles. 00440 // first tri. 00441 { 00442 CTrianglePatch &tri= triangles[0]; 00443 tri.PatchId= PatchBlockId.PatchId; 00444 tri.V0= p0; tri.V1= p1; tri.V2= p2; 00445 tri.Uv0= uv0; tri.Uv1= uv1; tri.Uv2= uv2; 00446 } 00447 00448 // second tri. 00449 { 00450 CTrianglePatch &tri= triangles[1]; 00451 tri.PatchId= PatchBlockId.PatchId; 00452 tri.V0= p2; tri.V1= p3; tri.V2= p0; 00453 tri.Uv0= uv2; tri.Uv1= uv3; tri.Uv2= uv0; 00454 } 00455 00456 } |
|
from what subPart of the patch those data comes from.
Definition at line 255 of file patch.h. Referenced by NL3D::CLandscapeCollisionGrid::build(), buildTileTriangles(), NL3D::CVisualCollisionEntity::displayDebugGrid(), and NL3D::CLandscape::fillPatchQuadBlock(). |
|
evaluated Vertices of this patch.
Definition at line 258 of file patch.h. Referenced by NL3D::CLandscapeCollisionGrid::build(), and NL3D::CVisualCollisionEntity::displayDebugGrid(). |