#include "camera.h"
-CRenderer::CRenderer()
-{
+CRenderer::CRenderer() {
- refCount = 1;
+ refCount = 1;
- m_bHooked = FALSE;
+ m_bHooked = FALSE;
- Register();
- Initialize();
+ Register();
+ Initialize();
}
-CRenderer::~CRenderer()
-{
- if (m_bHooked) {
- UnRegister();
- }
+CRenderer::~CRenderer() {
+ if ( m_bHooked ) {
+ UnRegister();
+ }
}
-void CRenderer::Register()
-{
- g_QglTable.m_pfnHookGL2DWindow(this);
- g_QglTable.m_pfnHookGL3DWindow(this);
- m_bHooked = TRUE;
+void CRenderer::Register() {
+ g_QglTable.m_pfnHookGL2DWindow( this );
+ g_QglTable.m_pfnHookGL3DWindow( this );
+ m_bHooked = TRUE;
}
-void CRenderer::UnRegister()
-{
- if (g_QglTable.m_nSize) {
- g_QglTable.m_pfnUnHookGL2DWindow(this);
- g_QglTable.m_pfnUnHookGL3DWindow(this);
- }
- m_bHooked = FALSE;
+void CRenderer::UnRegister() {
+ if ( g_QglTable.m_nSize ) {
+ g_QglTable.m_pfnUnHookGL2DWindow( this );
+ g_QglTable.m_pfnUnHookGL3DWindow( this );
+ }
+ m_bHooked = FALSE;
}
-void CRenderer::Initialize()
-{
+void CRenderer::Initialize() {
}
-void CRenderer::Draw2D(VIEWTYPE vt)
-{
-
- g_QglTable.m_pfn_qglPushAttrib(GL_ALL_ATTRIB_BITS);
- g_QglTable.m_pfn_qglPushMatrix();
-
- switch (vt) {
- case XY:
- break;
- case XZ:
- g_QglTable.m_pfn_qglRotatef(270.0f, 1.0f, 0.0f, 0.0f);
- break;
- case YZ:
- g_QglTable.m_pfn_qglRotatef(270.0f, 1.0f, 0.0f, 0.0f);
- g_QglTable.m_pfn_qglRotatef(270.0f, 0.0f, 0.0f, 1.0f);
- break;
- }
-
- CCamera *cam = firstCam;
- while (cam) {
- cam->GetCam()->draw(((Listener && cam == g_pCurrentEditCam) ? true : false));
- cam = cam->GetNext();
- }
-
- g_QglTable.m_pfn_qglPopMatrix();
- g_QglTable.m_pfn_qglPopAttrib();
+void CRenderer::Draw2D( VIEWTYPE vt ) {
+
+ g_QglTable.m_pfn_qglPushAttrib( GL_ALL_ATTRIB_BITS );
+ g_QglTable.m_pfn_qglPushMatrix();
+
+ switch ( vt )
+ {
+ case XY:
+ break;
+ case XZ:
+ g_QglTable.m_pfn_qglRotatef( 270.0f, 1.0f, 0.0f, 0.0f );
+ break;
+ case YZ:
+ g_QglTable.m_pfn_qglRotatef( 270.0f, 1.0f, 0.0f, 0.0f );
+ g_QglTable.m_pfn_qglRotatef( 270.0f, 0.0f, 0.0f, 1.0f );
+ break;
+ }
+
+ CCamera *cam = firstCam;
+ while ( cam ) {
+ cam->GetCam()->draw( ( ( Listener && cam == g_pCurrentEditCam ) ? true : false ) );
+ cam = cam->GetNext();
+ }
+
+ g_QglTable.m_pfn_qglPopMatrix();
+ g_QglTable.m_pfn_qglPopAttrib();
}
-void CRenderer::Draw3D()
-{
- // FIXME: really need a mainloop callback from the editor core
- static long start;
- static float cycle;
- static long msecs;
- static long current;
-
- if (g_iPreviewRunning) {
- if (g_iPreviewRunning == 1) {
- start = Q_QGetTickCount();
- GetCurrentCam()->GetCam()->startCamera(start);
- cycle = GetCurrentCam()->GetCam()->getTotalTime();
- msecs = (long) (cycle * 1000);
- current = start;
- g_iPreviewRunning = 2;
- }
-
- if (current < start + msecs) {
- float fov;
- vec3_t origin = {0.0f, 0.0f, 0.0f}, dir = {0.0f, 0.0f, 0.0f}, angles;
-
- GetCurrentCam()->GetCam()->getCameraInfo(current, &origin[0], &dir[0], &fov);
- VectorSet(angles, asin(dir[2]) * 180 / 3.14159, atan2(dir[1], dir[0]) * 180 / 3.14159, 0);
- g_CameraTable.m_pfnSetCamera(origin, angles);
- current = Q_QGetTickCount();
- } else {
- g_iPreviewRunning = 0;
- GetCurrentCam()->GetCam()->setRunning(false);
- g_FuncTable.m_pfnSysUpdateWindows(W_XY_OVERLAY | W_CAMERA);
- }
- }
-
- g_QglTable.m_pfn_qglPushAttrib(GL_ALL_ATTRIB_BITS);
-
- CCamera *cam = firstCam;
- while (cam) {
- cam->GetCam()->draw(((Listener && cam == g_pCurrentEditCam) ? true : false));
- cam = cam->GetNext();
- }
-
- if (g_iPreviewRunning) {
- int x, y, width, height, i;
- float degInRad;
-
- g_CameraTable.m_pfnGetCamWindowExtents(&x, &y, &width, &height);
-
- // setup orthographic projection mode
- g_QglTable.m_pfn_qglMatrixMode(GL_PROJECTION);
- g_QglTable.m_pfn_qglLoadIdentity();
- g_QglTable.m_pfn_qglDisable(GL_DEPTH_TEST);
- g_QglTable.m_pfn_qglOrtho(0, (float) width, 0, (float) height, -100, 100);
- g_QglTable.m_pfn_qglMatrixMode(GL_MODELVIEW);
-
- g_QglTable.m_pfn_qglLoadIdentity();
- g_QglTable.m_pfn_qglColor3f(1.f, 1.f, 1.f);
- g_QglTable.m_pfn_qglBegin(GL_LINE_LOOP);
- g_QglTable.m_pfn_qglVertex2f(10, 10);
- g_QglTable.m_pfn_qglVertex2f(40, 10);
- g_QglTable.m_pfn_qglVertex2f(40, 25);
- g_QglTable.m_pfn_qglVertex2f(10, 25);
- g_QglTable.m_pfn_qglEnd();
-
- g_QglTable.m_pfn_qglBegin(GL_LINE_LOOP);
- for (i = 0; i < 360; i += 60) {
- degInRad = i * (3.14159265358979323846 / 180.f);
- g_QglTable.m_pfn_qglVertex2f(18 + cos(degInRad) * 5, 18 + sin(degInRad) * 5);
- }
- g_QglTable.m_pfn_qglEnd();
-
- degInRad = (360 - ((current - start) % 360)) * (3.14159265358979323846 / 180.f);
- g_QglTable.m_pfn_qglBegin(GL_LINES);
- g_QglTable.m_pfn_qglVertex2f(18, 18);
- g_QglTable.m_pfn_qglVertex2f(18 + cos(degInRad) * 5, 18 + sin(degInRad) * 5);
- g_QglTable.m_pfn_qglVertex2f(32, 18);
- g_QglTable.m_pfn_qglVertex2f(32 + cos(degInRad) * 5, 18 + sin(degInRad) * 5);
- g_QglTable.m_pfn_qglEnd();
-
- g_QglTable.m_pfn_qglBegin(GL_LINE_LOOP);
- for (i = 0; i < 360; i += 60) {
- degInRad = i * (3.14159265358979323846 / 180.f);
- g_QglTable.m_pfn_qglVertex2f(32 + cos(degInRad) * 5, 18 + sin(degInRad) * 5);
- }
- g_QglTable.m_pfn_qglEnd();
-
- g_QglTable.m_pfn_qglBegin(GL_LINES);
- g_QglTable.m_pfn_qglVertex2f(40, 22);
- g_QglTable.m_pfn_qglVertex2f(52, 31);
- g_QglTable.m_pfn_qglVertex2f(40, 13);
- g_QglTable.m_pfn_qglVertex2f(52, 4);
- g_QglTable.m_pfn_qglEnd();
- }
-
- g_QglTable.m_pfn_qglPopAttrib();
+void CRenderer::Draw3D() {
+ // FIXME: really need a mainloop callback from the editor core
+ static long start;
+ static float cycle;
+ static long msecs;
+ static long current;
+
+ if ( g_iPreviewRunning ) {
+ if ( g_iPreviewRunning == 1 ) {
+ start = Q_QGetTickCount();
+ GetCurrentCam()->GetCam()->startCamera( start );
+ cycle = GetCurrentCam()->GetCam()->getTotalTime();
+ msecs = (long)( cycle * 1000 );
+ current = start;
+ g_iPreviewRunning = 2;
+ }
+
+ if ( current < start + msecs ) {
+ float fov;
+ vec3_t origin = {0.0f, 0.0f, 0.0f}, dir = {0.0f, 0.0f, 0.0f}, angles;
+
+ GetCurrentCam()->GetCam()->getCameraInfo( current, &origin[0], &dir[0], &fov );
+ VectorSet( angles, asin( dir[2] ) * 180 / 3.14159, atan2( dir[1], dir[0] ) * 180 / 3.14159, 0 );
+ g_CameraTable.m_pfnSetCamera( origin, angles );
+ current = Q_QGetTickCount();
+ }
+ else {
+ g_iPreviewRunning = 0;
+ GetCurrentCam()->GetCam()->setRunning( false );
+ g_FuncTable.m_pfnSysUpdateWindows( W_XY_OVERLAY | W_CAMERA );
+ }
+ }
+
+ g_QglTable.m_pfn_qglPushAttrib( GL_ALL_ATTRIB_BITS );
+
+ CCamera *cam = firstCam;
+ while ( cam ) {
+ cam->GetCam()->draw( ( ( Listener && cam == g_pCurrentEditCam ) ? true : false ) );
+ cam = cam->GetNext();
+ }
+
+ if ( g_iPreviewRunning ) {
+ int x, y, width, height, i;
+ float degInRad;
+
+ g_CameraTable.m_pfnGetCamWindowExtents( &x, &y, &width, &height );
+
+ // setup orthographic projection mode
+ g_QglTable.m_pfn_qglMatrixMode( GL_PROJECTION );
+ g_QglTable.m_pfn_qglLoadIdentity();
+ g_QglTable.m_pfn_qglDisable( GL_DEPTH_TEST );
+ g_QglTable.m_pfn_qglOrtho( 0, (float)width, 0, (float)height, -100, 100 );
+ g_QglTable.m_pfn_qglMatrixMode( GL_MODELVIEW );
+
+ g_QglTable.m_pfn_qglLoadIdentity();
+ g_QglTable.m_pfn_qglColor3f( 1.f, 1.f, 1.f );
+ g_QglTable.m_pfn_qglBegin( GL_LINE_LOOP );
+ g_QglTable.m_pfn_qglVertex2f( 10, 10 );
+ g_QglTable.m_pfn_qglVertex2f( 40, 10 );
+ g_QglTable.m_pfn_qglVertex2f( 40, 25 );
+ g_QglTable.m_pfn_qglVertex2f( 10, 25 );
+ g_QglTable.m_pfn_qglEnd();
+
+ g_QglTable.m_pfn_qglBegin( GL_LINE_LOOP );
+ for ( i = 0; i < 360; i += 60 ) {
+ degInRad = i * ( 3.14159265358979323846 / 180.f );
+ g_QglTable.m_pfn_qglVertex2f( 18 + cos( degInRad ) * 5, 18 + sin( degInRad ) * 5 );
+ }
+ g_QglTable.m_pfn_qglEnd();
+
+ degInRad = ( 360 - ( ( current - start ) % 360 ) ) * ( 3.14159265358979323846 / 180.f );
+ g_QglTable.m_pfn_qglBegin( GL_LINES );
+ g_QglTable.m_pfn_qglVertex2f( 18, 18 );
+ g_QglTable.m_pfn_qglVertex2f( 18 + cos( degInRad ) * 5, 18 + sin( degInRad ) * 5 );
+ g_QglTable.m_pfn_qglVertex2f( 32, 18 );
+ g_QglTable.m_pfn_qglVertex2f( 32 + cos( degInRad ) * 5, 18 + sin( degInRad ) * 5 );
+ g_QglTable.m_pfn_qglEnd();
+
+ g_QglTable.m_pfn_qglBegin( GL_LINE_LOOP );
+ for ( i = 0; i < 360; i += 60 ) {
+ degInRad = i * ( 3.14159265358979323846 / 180.f );
+ g_QglTable.m_pfn_qglVertex2f( 32 + cos( degInRad ) * 5, 18 + sin( degInRad ) * 5 );
+ }
+ g_QglTable.m_pfn_qglEnd();
+
+ g_QglTable.m_pfn_qglBegin( GL_LINES );
+ g_QglTable.m_pfn_qglVertex2f( 40, 22 );
+ g_QglTable.m_pfn_qglVertex2f( 52, 31 );
+ g_QglTable.m_pfn_qglVertex2f( 40, 13 );
+ g_QglTable.m_pfn_qglVertex2f( 52, 4 );
+ g_QglTable.m_pfn_qglEnd();
+ }
+
+ g_QglTable.m_pfn_qglPopAttrib();
}