29 #include "../../idlib/precompiled.h"
39 #include "../../renderer/tr_local.h"
40 #include "../../renderer/model_local.h"
45 static char THIS_FILE[] = __FILE__;
60 if (
g_axialDest >= selFace->face_winding->GetNumPoints()) {
100 BEGIN_MESSAGE_MAP(
CCamWnd, CWnd)
129 GetClientRect(hWnd, &rect);
135 SendMessage(hWnd, WM_NCACTIVATE, uMsg == WM_SETFOCUS, 0);
139 DefWindowProc(hWnd, uMsg, wParam, lParam);
143 return DefWindowProc(hWnd, uMsg, wParam, lParam);
153 HINSTANCE hInstance = AfxGetInstanceHandle();
154 if (::GetClassInfo(hInstance, CAMERA_WINDOW_CLASS, &wc) ==
FALSE) {
156 memset(&wc, 0,
sizeof(wc));
159 wc.style = CS_NOCLOSE;
160 wc.lpszClassName = CAMERA_WINDOW_CLASS;
161 wc.hCursor = LoadCursor(
NULL, IDC_ARROW);
163 if (AfxRegisterClass(&wc) ==
FALSE) {
164 Error(
"CCamWnd RegisterClass: failed");
168 cs.lpszClass = CAMERA_WINDOW_CLASS;
170 if (cs.style != QE3_CHILDSTYLE) {
171 cs.style = QE3_SPLITTER_STYLE;
174 BOOL bResult = CWnd::PreCreateWindow(cs);
201 if (!qwglMakeCurrent(dc.m_hDC,
win32.
hGLRC)) {
206 QE_CheckOpenGLForErrors();
215 QE_CheckOpenGLForErrors();
216 qwglSwapBuffers(dc.m_hDC);
253 if (GetCapture() ==
this && (GetAsyncKeyState(VK_MENU) & 0x8000) && !((GetAsyncKeyState(VK_SHIFT) & 0x8000) || (GetAsyncKeyState(VK_CONTROL) & 0x8000))) {
254 if (GetAsyncKeyState(VK_CONTROL) & 0x8000) {
257 else if (GetAsyncKeyState(VK_SHIFT) & 0x8000) {
325 if (CWnd::OnCreate(lpCreateStruct) == -1) {
330 HDC hDC = pDC->GetSafeHdc();
332 QEW_SetupPixelFormat(hDC,
true);
334 HFONT hfont = CreateFont(
347 FIXED_PITCH | FF_MODERN,
352 Error(
"couldn't create font");
355 HFONT hOldFont = (HFONT)SelectObject(hDC, hfont);
359 if ((g_qeglobals.d_font_list =
qglGenLists(256)) == 0) {
364 if ( !qwglUseFontBitmaps(hDC, 0, 255, g_qeglobals.d_font_list) ) {
365 common->
Warning(
"wglUseFontBitmaps failed (%d). Trying again.", GetLastError() );
369 if ( !qwglUseFontBitmaps(hDC, 0, 255, g_qeglobals.d_font_list) ) {
370 common->
Warning(
"wglUseFontBitmaps failed again (%d). Trying outlines.", GetLastError() );
372 if (!qwglUseFontOutlines(hDC, 0, 255, g_qeglobals.d_font_list, 0.0f, 0.1f, WGL_FONT_LINES,
NULL)) {
373 common->
Warning(
"wglUseFontOutlines also failed (%d), no coordinate text will be visible.", GetLastError() );
378 SelectObject(hDC, hOldFont);
400 Cam_MouseUp(point.x, r.bottom - 1 - point.y, nFlags);
401 if (!(nFlags & (MK_LBUTTON | MK_RBUTTON | MK_MBUTTON))) {
455 for (i = 0; i < 3; i++) {
474 float d, bestd, current;
479 start[2] = HUGE_DISTANCE;
488 bestd = HUGE_DISTANCE*2;
496 if (up && d < current && d > bestd) {
500 if (!up && d > current && d < bestd) {
505 if (bestd == 0 || bestd == HUGE_DISTANCE*2) {
519 Sys_GetCursorPos(&x, &y);
533 GetCursorPos(¤t);
579 if (buttony < yl && (buttonx < xl || buttonx > xh)) {
580 VectorMA(camera.origin, xf * dtime * g_nMoveSpeed, camera.right, camera.origin);
623 for (i = 0; i < 3; i++) {
643 (buttons == MK_LBUTTON) ||
644 (buttons == (MK_LBUTTON | MK_SHIFT)) ||
645 (buttons == (MK_LBUTTON | MK_CONTROL)) ||
646 (buttons == (MK_LBUTTON | MK_CONTROL | MK_SHIFT)) ||
647 (buttons == nMouseButton) ||
648 (buttons == (nMouseButton | MK_SHIFT)) ||
649 (buttons == (nMouseButton | MK_CONTROL)) ||
650 (buttons == (nMouseButton | MK_SHIFT | MK_CONTROL))
657 Patch_SetView(W_CAMERA);
664 if ( buttons == MK_RBUTTON ) {
676 Drag_MouseUp(buttons);
692 if (buttons == (MK_RBUTTON | MK_CONTROL)) {
697 else if ( buttons == (MK_RBUTTON | MK_CONTROL | MK_SHIFT) ) {
705 if (buttons & (MK_LBUTTON | MK_MBUTTON)) {
706 Drag_MouseMoved(x, y, buttons);
721 for (i = 0; i < 3; i++) {
747 if ( b->forceVisibile ) {
756 for (
int i = 0; i < 3; i++) {
757 mid[
i] = (b->mins[
i] + ((b->maxs[
i] - b->mins[
i]) / 2));
761 if (point.
Length() > distance) {
771 for (i = 0; i < 3; i++) {
780 for (i = 0; i < 3; i++) {
798 void CCamWnd::DrawLightRadius(brush_t *pBrush) {
800 int nRadius = Brush_LightRadius(pBrush);
802 Brush_SetLightColor(pBrush);
866 for (
int j = 0;
j < selFace->face_winding->GetNumPoints();
j++) {
871 points[0] = (*selFace->face_winding)[
g_axialAnchor].ToVec3();
872 VectorMA (points[0], 1, selFace->plane, points[0]);
873 VectorMA (points[0], 4, selFace->plane, points[1]);
874 points[3] = (*selFace->face_winding)[
g_axialDest].ToVec3();
875 VectorMA (points[3], 1, selFace->plane, points[3]);
876 VectorMA (points[3], 4, selFace->plane, points[2]);
900 gluPerspective(yfov, screenaspect, 2, 8192);
902 float xmin, xmax, ymin, ymax;
905 float projectionMatrix[16];
919 height = ymax - ymin;
921 projectionMatrix[0] = 2 * zNear /
width;
922 projectionMatrix[4] = 0;
923 projectionMatrix[8] = ( xmax + xmin ) / width;
924 projectionMatrix[12] = 0;
926 projectionMatrix[1] = 0;
927 projectionMatrix[5] = 2 * zNear /
height;
928 projectionMatrix[9] = ( ymax + ymin ) / height;
929 projectionMatrix[13] = 0;
932 projectionMatrix[2] = 0;
933 projectionMatrix[6] = 0;
934 projectionMatrix[10] = -1;
935 projectionMatrix[14] = -2 *
zNear;
937 projectionMatrix[3] = 0;
938 projectionMatrix[7] = 0;
939 projectionMatrix[11] = -1;
940 projectionMatrix[15] = 0;
968 qglClearColor(g_qeglobals.d_savedinfo.colors[COLOR_CAMERABACK][0], g_qeglobals.d_savedinfo.colors[COLOR_CAMERABACK][1], g_qeglobals.d_savedinfo.colors[COLOR_CAMERABACK][2], 0);
971 qglClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
998 if (!(
entityMode && brush->owner->eclass->fixedsize)) {
1011 qglTranslatef(g_qeglobals.d_select_translate[0],g_qeglobals.d_select_translate[1],g_qeglobals.d_select_translate[2]);
1017 for (brush = pList->next; brush != pList; brush = brush->next) {
1018 if (brush->pPatch) {
1030 qglColor4f( g_qeglobals.d_savedinfo.colors[COLOR_SELBRUSHES][0],g_qeglobals.d_savedinfo.colors[COLOR_SELBRUSHES][1],g_qeglobals.d_savedinfo.colors[COLOR_SELBRUSHES][2], 0.25f );
1035 for (brush = pList->next; brush != pList; brush = brush->next) {
1036 if (brush->pPatch || brush->modelHandle > 0) {
1042 qglColor4f( g_qeglobals.d_savedinfo.colors[COLOR_SELBRUSHES][0],g_qeglobals.d_savedinfo.colors[COLOR_SELBRUSHES][1],g_qeglobals.d_savedinfo.colors[COLOR_SELBRUSHES][2], 0.25f );
1047 if ( brush->owner->eclass->entityModel ) {
1051 for (face = brush->brush_faces; face; face = face->next) {
1059 for (
int i = 0; i < nCount; i++) {
1073 for (
int i = 0; i < nCount; i++) {
1080 for (brush = pList->next; brush != pList; brush = brush->next) {
1081 if (brush->pPatch || brush->modelHandle > 0) {
1085 for (face = brush->brush_faces; face; face = face->next) {
1090 if (g_qeglobals.d_select_mode == sel_vertex) {
1094 for (i = 0; i < g_qeglobals.d_numpoints; i++) {
1101 else if (g_qeglobals.d_select_mode == sel_edge) {
1107 for (i = 0; i < g_qeglobals.d_numedges; i++) {
1108 v1 = g_qeglobals.d_points[g_qeglobals.d_edges[
i].p1].ToFloatPtr();
1109 v2 = g_qeglobals.d_points[g_qeglobals.d_edges[
i].p2].ToFloatPtr();
1110 qglVertex3f( (v1[0] + v2[0]) * 0.5
f, (v1[1] + v2[1]) * 0.5f, (v1[2] + v2[2]) * 0.5f );
1117 g_splineList->
draw (static_cast<bool>(g_qeglobals.d_select_mode == sel_addpoint || g_qeglobals.d_select_mode == sel_editpoint));
1119 if ( g_qeglobals.selectObject && (g_qeglobals.d_select_mode == sel_addpoint || g_qeglobals.d_select_mode == sel_editpoint) ) {
1120 g_qeglobals.selectObject->drawSelection();
1128 if (g_qeglobals.d_pointfile_display_list) {
1139 QE_CheckOpenGLForErrors();
1152 CWnd::OnSize(nType, cx, cy);
1155 GetClientRect(rect);
1158 InvalidateRect(
NULL,
false);
1223 return (
stricmp( n, v ) == 0);
1247 g_qeglobals.rw->FreeLightDef( ent->
lightDef );
1252 g_qeglobals.rw->FreeEntityDef( ent->
modelDef );
1268 if (ent->
eclass->defArgs.FindKey(
"model")) {
1269 spawnArgs.
Set(
"model", ent->
eclass->defArgs.GetString(
"model"));
1290 g_qeglobals.rw->FreeEntityDef( ent->
modelDef );
1307 for (
int i = 0 ;
i < tris.
Num() ;
i++ ) {
1320 ent->
modelDef = g_qeglobals.rw->AddEntityDef( &refent );
1329 spawnArgs.
GetString(
"anim",
"idle", str);
1331 if ( update && refent.
joints ) {
1336 int frame = spawnArgs.
GetInt(
"frame") + 1;
1344 g_qeglobals.rw->FreeEntityDef( ent->
modelDef );
1346 ent->
modelDef = g_qeglobals.rw->AddEntityDef( &refent );
1351 if (!(ent->
eclass->nShowFlags & ECLASS_LIGHT)) {
1355 if ( spawnArgs.
GetBool(
"start_off" ) ) {
1366 if (update && ent->
lightDef >= 0) {
1367 g_qeglobals.rw->UpdateLightDef( ent->
lightDef, &lightParms );
1370 g_qeglobals.rw->FreeLightDef(ent->
lightDef);
1372 ent->
lightDef = g_qeglobals.rw->AddLightDef( &lightParms );
1381 strcpy(out, outFile);
1387 idStr lastMaterial(
"");
1390 f->
Printf(
"mtllib %s.mtl\n", out );
1391 for (i = 0; i < tris->
Num(); i++) {
1393 for (j = 0; j < tri->
numVerts; j++) {
1396 for (j = 0; j < tri->
numVerts; j++) {
1399 for (j = 0; j < tri->
numVerts; j++) {
1403 if (
stricmp( (*mats)[i]->GetName(), lastMaterial)) {
1404 lastMaterial = (*mats)[
i]->GetName();
1407 for (k = 0; k < matNames.
Num(); k++) {
1423 for (
int j = 0; j < tri->
numIndexes; j += 3) {
1425 i1 = tri->
indexes[j+2] + indexBase;
1426 i2 = tri->
indexes[j+1] + indexBase;
1428 f->
Printf(
"f %i/%i/%i %i/%i/%i %i/%i/%i\n", i1,i1,i1, i2,i2,i2, i3,i3,i3 );
1436 strcat(out,
".mtl");
1439 for (k = 0; k < matNames.
Num(); k++) {
1441 f->
Printf(
"newmtl %s\n\tNs 0\n\td 1\n\tillum 2\n\tKd 0 0 0 \n\tKs 0.22 0.22 0.22 \n\tKa 0 0 0 \n\tmap_Kd %s/base/%s.tga\n\n\n", matNames[k]->c_str(),
"z:/d3xp", matNames[k]->c_str() );
1451 if (brush->modelHandle > 0 ) {
1475 v = tri2->
verts[
j].
xyz * brush->owner->rotation + brush->owner->origin;
1482 float x2 = (((x - brush->owner->origin[0]) * c) - ((y - brush->owner->origin[1]) * s)) + brush->owner->origin[0];
1483 float y2 = (((x - brush->owner->origin[0]) *
s) + ((y - brush->owner->origin[1]) *
c)) + brush->owner->origin[1];
1502 #define MAX_TRI_SURFACES 16384
1509 if (brush->modelHandle > 0 ) {
1517 int numSurfaces = 0;
1519 if ( brush->owner->eclass->fixedsize && !brush->entityModel) {
1523 if ( brush->pPatch ) {
1531 cp->
SetSize( pm->width, pm->height );
1532 for ( i = 0; i < pm->width; i++ ) {
1533 for ( j = 0; j < pm->height; j++ ) {
1534 (*cp)[j*cp->
GetWidth()+
i].xyz = pm->ctrl(i, j).xyz;
1535 (*cp)[j*cp->
GetWidth()+
i].st = pm->ctrl(i, j).st;
1540 if ( pm->explicitSubdivisions ) {
1551 tri->
numIndexes = 6 * ( width - 1 ) * ( height - 1 );
1554 for ( i = 0 ; i < tri->
numVerts ; i++ ) {
1557 tri->
verts[
i].
xyz -= brush->owner->origin;
1562 for ( i = 1 ; i <
width ; i++ ) {
1563 for ( j = 1 ; j <
height ; j++ ) {
1577 mats->
Append(pm->d_texture);
1586 for ( face_t *face = brush->brush_faces ; face; face = face->next ) {
1589 w = face->face_winding;
1600 for ( i = 0 ; i < tri->
numVerts ; i++ ) {
1609 tri->
verts[
i].
xyz -= brush->owner->origin;
1626 mats->
Append(face->d_texture);
1635 CFileDialog dlgFile(
FALSE,
"obj",
NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
"Wavefront object files (*.obj)|*.obj||",
g_pParentWnd);
1636 if (dlgFile.DoModal() == IDOK) {
1642 if (
b->hiddenBrush ) {
1653 Tris_ToOBJ(dlgFile.GetPathName().GetBuffer(0), &tris, &mats);
1655 for( i = 0; i < tris.
Num(); i++ ) {
1663 CFileDialog dlgFile(
FALSE,
"lwo, ase",
NULL, 0,
"(*.lwo)|*.lwo|(*.ase)|*.ase|(*.ma)|*.ma||",
g_pParentWnd );
1665 if ( dlgFile.DoModal() == IDOK ) {
1678 if (
b->hiddenBrush ) {
1715 g_qeglobals.rw->InitFromMap(
NULL );
1719 int numSurfaces = 0;
1728 for (brush = brushList->next; brush != brushList; brush = brush->next) {
1730 if ( brush->hiddenBrush ) {
1746 numSurfaces +=
Brush_ToTris( brush, &tris, &mats,
false,
false );
1751 for (
int i = 0 ;
i < tris.
Num() ;
i++ ) {
1765 memset( &worldEntity, 0,
sizeof( worldEntity ) );
1773 worldModelDef = g_qeglobals.rw->AddEntityDef( &worldEntity );
1813 BuildEntityRenderState( ent, (ent->lightDef != -1 || ent->modelDef != -1 || ent->soundEmitter ) ?
true :
false );
1814 if (ret ==
false && ent->modelDef || ent->lightDef) {
1831 if (ent->lightDef >= 0) {
1832 g_qeglobals.rw->FreeLightDef( ent->lightDef );
1836 if (ent->modelDef >= 0) {
1848 g_qeglobals.rw->FreeEntityDef( ent->modelDef );
1876 strCaption += (
renderMode) ?
"RENDER" :
"CAM";
1879 strCaption += (
entityMode) ?
" +lights" :
"";
1880 strCaption += (
selectMode) ?
" +selected" :
"";
1883 strCaption += (
soundMode) ?
" +snd" :
"";
1884 SetWindowText(strCaption);
1934 SetTimer(0, 10,
NULL);
2023 for (brush_t *brush = brushList->next; brush != brushList; brush = brush->next) {
2065 if (!qwglMakeCurrent(dc.m_hDC,
win32.
hGLRC)) {
2087 memset( &refdef, 0,
sizeof( refdef ) );
2103 g_qeglobals.rw->RenderScene( &refdef );
2126 if (nIDEvent == 1) {
2137 if (QE_SingleBrush(
true,
true)) {
2139 if (b->owner->eclass->nShowFlags & ECLASS_CAMERAVIEW) {
CMainFrame * g_pParentWnd
bool FilterBrush(brush_t *pb)
GLsizei const GLfloat * points
idMat3 ToMat3(void) const
void WINAPI Sys_UpdateWindows(int nBits)
afx_msg void OnMButtonUp(UINT nFlags, CPoint point)
virtual void EndFrame(int *frontEndMsec, int *backEndMsec)=0
int GetInt(const char *key, const char *defaultString="0") const
void DrawAxial(face_t *selFace)
void AddPrimitive(idMapPrimitive *p)
GLdouble GLdouble GLdouble GLdouble zNear
bool IsBModel(brush_t *b)
CONST PIXELFORMATDESCRIPTOR UINT
float GetFloat(void) const
idRenderModel * worldModel
void SetView(const idVec3 &origin, const idAngles &angles)
virtual void FinishSurfaces()=0
const float * ToFloatPtr(void) const
#define VectorSubtract(a, b, c)
void Tris_ToOBJ(const char *outFile, idTriList *tris, idMatList *mats)
idRenderSystem * renderSystem
int Sys_Milliseconds(void)
void BuildEntityRenderState(entity_t *ent, bool update)
idFileSystem * fileSystem
const idMaterial * shader
bool UpdateRenderEntities()
virtual void AddSurface(modelSurface_t surface)=0
const char * ValueForKey(entity_t *ent, const char *key)
void glBox(idVec4 &color, idVec3 &point, float size)
bool GetMatrixForKey(entity_t *ent, const char *key, idMat3 &mat)
virtual BOOL PreCreateWindow(CREATESTRUCT &cs)
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
#define VectorAdd(a, b, c)
void SetProjectionMatrix()
static const float M_DEG2RAD
afx_msg void OnLButtonUp(UINT nFlags, CPoint point)
srfTriangles_t * R_AllocStaticTriSurf(void)
void Set(const char *key, const char *value)
void SetXYFriend(CXYWnd *pWnd)
void ShiftTexture_BrushPrimit(face_t *f, int x, int y)
virtual void BeginFrame(int windowWidth, int windowHeight)=0
int Brush_TransformModel(brush_t *brush, idTriList *tris, idMatList *mats)
virtual void ANIM_CreateAnimFrame(const idRenderModel *model, const idMD5Anim *anim, int numJoints, idJointMat *frame, int time, const idVec3 &offset, bool remove_origin_offset)
srfTriangles_t * R_CopyStaticTriSurf(const srfTriangles_t *tri)
int Icmp(const char *text) const
void SubdivideExplicit(int horzSubdivisions, int vertSubdivisions, bool genNormals, bool removeLinear=false)
idStr & BackSlashesToSlashes(void)
void Pointfile_Draw(void)
afx_msg void OnSize(UINT nType, int cx, int cy)
camera_draw_mode draw_mode
virtual void InitEmpty(const char *name)=0
int GetHeight(void) const
virtual void AddModel(idRenderModel *model)=0
static const float M_RAD2DEG
void Error(const char *pFormat,...)
GLfloat GLfloat GLfloat v2
void BuildRendererState()
void Entity_UpdateSoundEmitter(entity_t *ent)
const float DEFAULT_CURVE_MAX_ERROR
void Subdivide(float maxHorizontalError, float maxVerticalError, float maxLength, bool genNormals=false)
int GetNumPoints(void) const
const char * GetString(const char *key, const char *defaultString="") const
GLubyte GLubyte GLubyte GLubyte w
void ValidateAxialPoints()
idMapPrimitive * BrushToMapPrimitive(const brush_t *b, const idVec3 &origin)
bool CullBrush(brush_t *b, bool cubicOnly)
int Brush_ToTris(brush_t *brush, idTriList *tris, idMatList *mats, bool models, bool bmodel)
static float Fabs(float f)
bool GetBool(const char *key, const char *defaultString="0") const
srfTriangles_t * geometry
virtual idRenderModel * FindModel(const char *modelName)=0
afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)
virtual const modelSurface_t * Surface(int surfaceNum) const =0
idImageManager * globalImages
void * Mem_Alloc16(const int size)
void Cam_MouseControl(float dtime)
void Select_RotateTexture(float amt, bool absolute)
CPtrArray & g_ptrSelectedFaces
void R_FreeStaticTriSurf(srfTriangles_t *tri)
void HandleKey(UINT nChar, UINT nRepCnt, UINT nFlags, bool bDown=true)
typedef HDC(WINAPI *PFNWGLGETCURRENTREADDCARBPROC)(void)
GLubyte GLubyte GLubyte a
virtual void Printf(const char *fmt,...) id_attribute((format(printf
idCVar r_znear("r_znear","3", CVAR_RENDERER|CVAR_FLOAT,"near Z clip plane distance", 0.001f, 200.0f)
void Cam_MouseUp(int x, int y, int buttons)
afx_msg void OnTimer(UINT nIDEvent)
virtual const idMD5Anim * ANIM_GetAnimFromEntityDef(const char *classname, const char *animname)
afx_msg void OnMButtonDown(UINT nFlags, CPoint point)
GLdouble GLdouble GLdouble y2
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct)
afx_msg void OnRButtonDown(UINT nFlags, CPoint point)
virtual void FreeModel(idRenderModel *model)=0
GLenum GLsizei GLsizei height
void ToggleAnimationMode()
virtual bool WriteCollisionModelForMapEntity(const idMapEntity *mapEnt, const char *filename, const bool testTraceModel=true)=0
void Cam_MouseDown(int x, int y, int buttons)
void OriginalMouseDown(UINT nFlags, CPoint point)
idSoundEmitter * soundEmitter
afx_msg void OnLButtonDown(UINT nFlags, CPoint point)
LONG WINAPI CamWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
int Append(const type &obj)
GLdouble GLdouble GLdouble r
idRenderModelManager * renderModelManager
virtual idFile * OpenExplicitFileWrite(const char *OSPath)=0
void OriginalMouseUp(UINT nFlags, CPoint point)
void Cam_MouseMoved(int x, int y, int buttons)
virtual void RemoveModel(idRenderModel *model)=0
IMPLEMENT_DYNCREATE(CCamWnd, CWnd)
const float DEFAULT_CURVE_MAX_LENGTH
idMat3 ToMat3(void) const
entity_t * FindEntity(const char *pszKey, const char *pszValue)
void glLabeledPoint(idVec4 &color, idVec3 &point, float size, const char *label)
void Mem_Free16(void *ptr)
virtual const idVec3 & ANIM_GetModelOffsetFromEntityDef(const char *classname)
class idSoundEmitter * referenceSound
void Brush_Draw(brush_t *b, bool bSelected)
const char * c_str(void) const
virtual void ParseSpawnArgsToRenderLight(const idDict *args, renderLight_t *renderLight)
void StripExtension(char *path)
virtual void ParseSpawnArgsToRenderEntity(const idDict *args, renderEntity_t *renderEntity)
idCameraDef * g_splineList
afx_msg void OnRButtonUp(UINT nFlags, CPoint point)
idAngles ToAngles(void) const
const idVec3 & ToVec3(void) const
void Brush_DrawXY(brush_t *b, int nViewType, bool bSelected, bool ignoreViewType)
void R_AllocStaticTriSurfIndexes(srfTriangles_t *tri, int numIndexes)
#define EDITOR_WINDOWTEXT
void Face_Draw(face_t *f)
#define VectorMA(v, s, b, o)
void Cam_ChangeFloor(bool up)
char * va(const char *fmt,...)
face_t * Brush_Ray(idVec3 origin, idVec3 dir, brush_t *b, float *dist, bool testPrimitive)
virtual void CloseFile(idFile *f)=0
virtual const char * OSPathToRelativePath(const char *OSPath)=0
void R_ToggleSmpFrame(void)
idSoundEmitter * referenceSound
float FloatForKey(entity_t *ent, const char *key)
virtual int NumJoints(void) const
void R_AllocStaticTriSurfVerts(srfTriangles_t *tri, int numVerts)
virtual void virtual void Warning(const char *fmt,...) id_attribute((format(printf
void SetSize(int patchWidth, int patchHeight)
float shaderParms[MAX_ENTITY_SHADER_PARMS]
virtual int Printf(const char *fmt,...) id_attribute((format(printf
idCollisionModelManager * collisionModelManager
virtual idRenderModel * AllocModel()=0
bool Map_IsBrushFiltered(brush_t *b)
afx_msg void OnMouseMove(UINT nFlags, CPoint point)
virtual int NumSurfaces() const =0