Definition at line 531 of file zone_lighter.h.
Public Member Functions | |
CPointLightRT () | |
bool | testRaytrace (const CVector &v) |
Data Fields | |
NLMISC::CBSphere | BSphere |
uint | DstId |
CCubeGrid< const CTriangle * > | FaceCubeGrid |
float | OODeltaAttenuation |
CPointLightNamed | PointLight |
uint | RefCount |
|
Definition at line 3132 of file zone_lighter.cpp.
03133 { 03134 RefCount= 0; 03135 } |
|
Tells if a point is visible from this light. NB: test first if in BSphere If occluded or out of radius, return false, else return true. Also Skip if the light is an Ambient, and skip if the light is a spot and if the position is out of the cone Definition at line 3139 of file zone_lighter.cpp. References NLMISC::CBSphere::Center, NL3D::CPointLight::computeLinearAttenuation(), NL3D::CZoneLighter::CTriangle::getPlane(), NL3D::CCubeGrid< const CTriangle * >::getSel(), NL3D::CPointLight::getType(), NLMISC::CBSphere::include(), NLMISC::CTriangle::intersect(), NL3D::CCubeGrid< const CTriangle * >::isEndSel(), NL3D::CCubeGrid< const CTriangle * >::nextSel(), NL3D::CCubeGrid< const CTriangle * >::select(), NL3D::CZoneLighter::CTriangle::Triangle, and v. Referenced by NL3D::CZoneLighter::processZonePointLightRT().
03140 { 03141 CVector dummy; 03142 03143 if(!BSphere.include(v)) 03144 return false; 03145 03146 // If Ambient light, just skip 03147 if(PointLight.getType()== CPointLight::AmbientLight) 03148 return false; 03149 03150 // If SpotLight verify in angle radius. 03151 if(PointLight.getType()== CPointLight::SpotLight) 03152 { 03153 float att= PointLight.computeLinearAttenuation(v); 03154 if (att==0) 03155 return false; 03156 } 03157 03158 // Select in the cubeGrid 03159 FaceCubeGrid.select(v); 03160 // For all faces selected 03161 while(!FaceCubeGrid.isEndSel()) 03162 { 03163 const CTriangle *tri= FaceCubeGrid.getSel(); 03164 03165 // If intersect, the point is occluded. 03166 if( tri->Triangle.intersect(BSphere.Center, v, dummy, tri->getPlane()) ) 03167 return false; 03168 03169 // next 03170 FaceCubeGrid.nextSel(); 03171 } 03172 03173 // Ok the point is visilbe from the light 03174 return true; 03175 } |
|
Definition at line 536 of file zone_lighter.h. Referenced by NL3D::CZoneLighter::addStaticPointLight(), NL3D::CZoneLighter::compilePointLightRT(), NL3D::CZoneLighter::CPredPointLightToPoint::operator()(), and NL3D::CZoneLighter::processZonePointLightRT(). |
|
Definition at line 543 of file zone_lighter.h. Referenced by NL3D::CZoneLighter::processZonePointLightRT(). |
|
Definition at line 539 of file zone_lighter.h. Referenced by NL3D::CZoneLighter::compilePointLightRT(). |
|
Definition at line 534 of file zone_lighter.h. Referenced by NL3D::CZoneLighter::addStaticPointLight(), and NL3D::CZoneLighter::CPredPointLightToPoint::operator()(). |
|
Definition at line 533 of file zone_lighter.h. Referenced by NL3D::CZoneLighter::addStaticPointLight(), NL3D::CZoneLighter::compilePointLightRT(), NL3D::CZoneLighter::CPredPointLightToPoint::operator()(), and NL3D::CZoneLighter::processZonePointLightRT(). |
|
Definition at line 541 of file zone_lighter.h. Referenced by NL3D::CZoneLighter::compilePointLightRT(), and NL3D::CZoneLighter::processZonePointLightRT(). |