State::stateResult_t SurfelRenderer::doEnableState(FrameContext & context, Node * node, const RenderParam & rp) { State::stateResult_t result = NodeRendererState::doEnableState(context,node,rp); if( result == State::STATE_OK ){ CameraNode* camera = dynamic_cast<CameraNode*>( context.getCamera() ); if(camera){ // else: an orthographic camera is used; just re-use the previous values. cameraOrigin = camera->getWorldOrigin(); projectionScale = camera->getWidth() / (std::tan((camera->getRightAngle()-camera->getLeftAngle()).rad()*0.5f)*2.0f); } } return result; }