]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - radiant/points.cpp
more eol-style
[xonotic/netradiant.git] / radiant / points.cpp
index 64e676672f45b0b0ada10000120bb68bc1b4ad85..2da929768596ab0574e77e457c8153a373b4a1b5 100644 (file)
-/*\r
-Copyright (C) 1999-2007 id Software, Inc. and contributors.\r
-For a list of contributors, see the accompanying CONTRIBUTORS file.\r
-\r
-This file is part of GtkRadiant.\r
-\r
-GtkRadiant is free software; you can redistribute it and/or modify\r
-it under the terms of the GNU General Public License as published by\r
-the Free Software Foundation; either version 2 of the License, or\r
-(at your option) any later version.\r
-\r
-GtkRadiant is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
-GNU General Public License for more details.\r
-\r
-You should have received a copy of the GNU General Public License\r
-along with GtkRadiant; if not, write to the Free Software\r
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA\r
-*/\r
-\r
-#include "stdafx.h"\r
-\r
-#define        MAX_POINTFILE   8192\r
-static vec3_t  s_pointvecs[MAX_POINTFILE];\r
-static int             s_num_points, s_check_point;\r
-\r
-CPointfile g_pointfile;\r
-\r
-// CPointfile routine used by the standard code ---------------------------------\r
-\r
-void CPointfile::Init()\r
-{\r
-  s_num_points = 0;\r
-}\r
-\r
-void CPointfile::PushPoint (vec3_t v)\r
-{\r
-       if (s_num_points < MAX_POINTFILE)\r
-       {\r
-               VectorCopy (v, s_pointvecs[s_num_points]);\r
-               s_num_points++;\r
-       }\r
-}\r
-\r
-// create the display list at the end\r
-void CPointfile::GenerateDisplayList()\r
-{\r
-  int i;\r
-\r
-       if (!g_qeglobals.d_pointfile_display_list)\r
-               g_qeglobals.d_pointfile_display_list = qglGenLists(1);\r
-\r
-  qglNewList (g_qeglobals.d_pointfile_display_list,  GL_COMPILE);\r
-  \r
-       qglColor3f (1, 0, 0);\r
-       qglDisable(GL_TEXTURE_2D);\r
-       qglDisable(GL_TEXTURE_1D);\r
-       qglLineWidth (4);\r
-       qglBegin(GL_LINE_STRIP);\r
-       for (i=0;i<s_num_points;i++)\r
-       {\r
-         if (s_num_points < MAX_POINTFILE)\r
-         {\r
-           qglVertex3fv (s_pointvecs[i]);\r
-         }\r
-       }\r
-       qglEnd();\r
-       qglLineWidth (1);\r
-       \r
-       qglEndList ();\r
-       \r
-       s_check_point = 0;\r
-}\r
-\r
-// old (but still relevant) pointfile code -------------------------------------\r
-\r
-void Pointfile_Delete (void)\r
-{\r
-       char    name[1024];\r
-\r
-       strcpy (name, currentmap);\r
-       StripExtension (name);\r
-       strcat (name, ".lin");\r
-\r
-       remove(name);\r
-}\r
-\r
-// advance camera to next point\r
-void Pointfile_Next (void)\r
-{\r
-       vec3_t  dir;\r
-\r
-       if (s_check_point >= s_num_points-2)\r
-       {\r
-               Sys_Status ("End of pointfile", 0);\r
-               return;\r
-       }\r
-       s_check_point++;\r
-       VectorCopy (s_pointvecs[s_check_point], g_pParentWnd->GetCamWnd()->Camera()->origin);\r
-       VectorCopy (s_pointvecs[s_check_point], g_pParentWnd->GetXYWnd()->GetOrigin());\r
-       VectorSubtract (s_pointvecs[s_check_point+1], g_pParentWnd->GetCamWnd()->Camera()->origin, dir);\r
-       VectorNormalize (dir, dir);\r
-       g_pParentWnd->GetCamWnd()->Camera()->angles[1] = atan2 (dir[1], dir[0])*180/3.14159;\r
-       g_pParentWnd->GetCamWnd()->Camera()->angles[0] = asin (dir[2])*180/3.14159;\r
-\r
-       Sys_UpdateWindows (W_ALL);\r
-}\r
-\r
-// advance camera to previous point\r
-void Pointfile_Prev (void)\r
-{\r
-       vec3_t  dir;\r
-\r
-       if ( s_check_point == 0)\r
-       {\r
-               Sys_Status ("Start of pointfile", 0);\r
-               return;\r
-       }\r
-       s_check_point--;\r
-       VectorCopy (s_pointvecs[s_check_point], g_pParentWnd->GetCamWnd()->Camera()->origin);\r
-       VectorCopy (s_pointvecs[s_check_point], g_pParentWnd->GetXYWnd()->GetOrigin());\r
-       VectorSubtract (s_pointvecs[s_check_point+1], g_pParentWnd->GetCamWnd()->Camera()->origin, dir);\r
-       VectorNormalize (dir, dir);\r
-       g_pParentWnd->GetCamWnd()->Camera()->angles[1] = atan2 (dir[1], dir[0])*180/3.14159;\r
-       g_pParentWnd->GetCamWnd()->Camera()->angles[0] = asin (dir[2])*180/3.14159;\r
-\r
-       Sys_UpdateWindows (W_ALL);\r
-}\r
-\r
-void WINAPI Pointfile_Check (void)\r
-{\r
-       char    name[1024];\r
-       int             size;\r
-       char    *data;\r
-  char  *text;\r
-  int   line = 1;\r
-       vec3_t v;\r
-\r
-       strcpy (name, currentmap);\r
-       StripExtension (name);\r
-       strcat (name, ".lin");\r
-\r
-       size = vfsLoadFullPathFile (name, (void**)&data);\r
-  if (size <= 0)\r
-  {\r
-    Sys_FPrintf (SYS_ERR, "Pointfile %s not found\n", name);\r
-               return;\r
-  }\r
-\r
-  // store a pointer\r
-  text = data;\r
-\r
-       Sys_Printf ("Reading pointfile %s\n", name);\r
-\r
-  g_pointfile.Init();\r
-\r
-       while (*data)\r
-       {\r
-    if (sscanf(data,"%f %f %f", &v[0], &v[1], &v[2]) != 3)\r
-    {\r
-      Sys_Printf("Corrupt point file, line %d\n",line);\r
-                       break;\r
-    }\r
-\r
-       while (*data && *data != '\n')\r
-    {\r
-      if (*(data-1) == ' ' && *(data) == '-' && *(data+1) == ' ')\r
-        break;\r
-                 data++;\r
-    }\r
-    // deal with zhlt style point files.\r
-    if (*data == '-')\r
-    {\r
-      if (sscanf(data,"- %f %f %f", &v[0], &v[1], &v[2]) != 3)\r
-      {\r
-        Sys_Printf("Corrupt point file, line %d\n",line);\r
-        break;\r
-      }\r
-\r
-      while (*data && *data != '\n')\r
-                   data++;\r
-\r
-    }\r
-    while (*data == '\n')\r
-    {\r
-      data++; // skip the \n\r
-      line++;\r
-    }\r
-               g_pointfile.PushPoint (v);\r
-       }\r
-\r
-  g_free(text);\r
-       \r
-       g_pointfile.GenerateDisplayList();\r
-\r
-  Sys_UpdateWindows (W_ALL);\r
-}\r
-\r
-void Pointfile_Draw( void )\r
-{\r
-  qglCallList (g_qeglobals.d_pointfile_display_list);\r
-}\r
-\r
-void Pointfile_Clear (void)\r
-{\r
-       if (!g_qeglobals.d_pointfile_display_list)\r
-               return;\r
-\r
-       qglDeleteLists (g_qeglobals.d_pointfile_display_list, 1);\r
-       g_qeglobals.d_pointfile_display_list = 0;\r
-       Sys_UpdateWindows (W_ALL);\r
-}\r
-\r
-// CPointfile implementation for SAX speicific stuff -------------------------------\r
-void CPointfile::saxStartElement (message_info_t *ctx, const xmlChar *name, const xmlChar **attrs)\r
-{\r
-  if (strcmp ((char *)name, "polyline")==0)\r
-  {\r
-    Init();\r
-    // there's a prefs setting to avoid stopping on leak\r
-    if (!g_PrefsDlg.m_bLeakStop)\r
-      ctx->stop_depth = 0;\r
-  }\r
-}\r
-\r
-void CPointfile::saxEndElement (message_info_t *ctx, const xmlChar *name)\r
-{\r
-  if (strcmp ((char *)name, "polyline")==0)\r
-  {\r
-    // we are done\r
-    GenerateDisplayList();\r
-    ctx->bGeometry = false;\r
-  }\r
-}\r
-\r
-// only "point" is expected to have characters around here\r
-void CPointfile::saxCharacters (message_info_t *ctx, const xmlChar *ch, int len)\r
-{\r
-  vec3_t v;\r
-  \r
-  sscanf ((char *)ch, "%f %f %f\n", &v[0], &v[1], &v[2]);\r
-  PushPoint (v);\r
-}\r
-\r
-char * CPointfile::getName()\r
-{\r
-  return "Map is leaked";\r
-}\r
+/*
+Copyright (C) 1999-2007 id Software, Inc. and contributors.
+For a list of contributors, see the accompanying CONTRIBUTORS file.
+
+This file is part of GtkRadiant.
+
+GtkRadiant is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+GtkRadiant is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GtkRadiant; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+#include "stdafx.h"
+
+#define        MAX_POINTFILE   8192
+static vec3_t  s_pointvecs[MAX_POINTFILE];
+static int             s_num_points, s_check_point;
+
+CPointfile g_pointfile;
+
+// CPointfile routine used by the standard code ---------------------------------
+
+void CPointfile::Init()
+{
+  s_num_points = 0;
+}
+
+void CPointfile::PushPoint (vec3_t v)
+{
+       if (s_num_points < MAX_POINTFILE)
+       {
+               VectorCopy (v, s_pointvecs[s_num_points]);
+               s_num_points++;
+       }
+}
+
+// create the display list at the end
+void CPointfile::GenerateDisplayList()
+{
+  int i;
+
+       if (!g_qeglobals.d_pointfile_display_list)
+               g_qeglobals.d_pointfile_display_list = qglGenLists(1);
+
+  qglNewList (g_qeglobals.d_pointfile_display_list,  GL_COMPILE);
+  
+       qglColor3f (1, 0, 0);
+       qglDisable(GL_TEXTURE_2D);
+       qglDisable(GL_TEXTURE_1D);
+       qglLineWidth (4);
+       qglBegin(GL_LINE_STRIP);
+       for (i=0;i<s_num_points;i++)
+       {
+         if (s_num_points < MAX_POINTFILE)
+         {
+           qglVertex3fv (s_pointvecs[i]);
+         }
+       }
+       qglEnd();
+       qglLineWidth (1);
+       
+       qglEndList ();
+       
+       s_check_point = 0;
+}
+
+// old (but still relevant) pointfile code -------------------------------------
+
+void Pointfile_Delete (void)
+{
+       char    name[1024];
+
+       strcpy (name, currentmap);
+       StripExtension (name);
+       strcat (name, ".lin");
+
+       remove(name);
+}
+
+// advance camera to next point
+void Pointfile_Next (void)
+{
+       vec3_t  dir;
+
+       if (s_check_point >= s_num_points-2)
+       {
+               Sys_Status ("End of pointfile", 0);
+               return;
+       }
+       s_check_point++;
+       VectorCopy (s_pointvecs[s_check_point], g_pParentWnd->GetCamWnd()->Camera()->origin);
+       VectorCopy (s_pointvecs[s_check_point], g_pParentWnd->GetXYWnd()->GetOrigin());
+       VectorSubtract (s_pointvecs[s_check_point+1], g_pParentWnd->GetCamWnd()->Camera()->origin, dir);
+       VectorNormalize (dir, dir);
+       g_pParentWnd->GetCamWnd()->Camera()->angles[1] = atan2 (dir[1], dir[0])*180/3.14159;
+       g_pParentWnd->GetCamWnd()->Camera()->angles[0] = asin (dir[2])*180/3.14159;
+
+       Sys_UpdateWindows (W_ALL);
+}
+
+// advance camera to previous point
+void Pointfile_Prev (void)
+{
+       vec3_t  dir;
+
+       if ( s_check_point == 0)
+       {
+               Sys_Status ("Start of pointfile", 0);
+               return;
+       }
+       s_check_point--;
+       VectorCopy (s_pointvecs[s_check_point], g_pParentWnd->GetCamWnd()->Camera()->origin);
+       VectorCopy (s_pointvecs[s_check_point], g_pParentWnd->GetXYWnd()->GetOrigin());
+       VectorSubtract (s_pointvecs[s_check_point+1], g_pParentWnd->GetCamWnd()->Camera()->origin, dir);
+       VectorNormalize (dir, dir);
+       g_pParentWnd->GetCamWnd()->Camera()->angles[1] = atan2 (dir[1], dir[0])*180/3.14159;
+       g_pParentWnd->GetCamWnd()->Camera()->angles[0] = asin (dir[2])*180/3.14159;
+
+       Sys_UpdateWindows (W_ALL);
+}
+
+void WINAPI Pointfile_Check (void)
+{
+       char    name[1024];
+       int             size;
+       char    *data;
+  char  *text;
+  int   line = 1;
+       vec3_t v;
+
+       strcpy (name, currentmap);
+       StripExtension (name);
+       strcat (name, ".lin");
+
+       size = vfsLoadFullPathFile (name, (void**)&data);
+  if (size <= 0)
+  {
+    Sys_FPrintf (SYS_ERR, "Pointfile %s not found\n", name);
+               return;
+  }
+
+  // store a pointer
+  text = data;
+
+       Sys_Printf ("Reading pointfile %s\n", name);
+
+  g_pointfile.Init();
+
+       while (*data)
+       {
+    if (sscanf(data,"%f %f %f", &v[0], &v[1], &v[2]) != 3)
+    {
+      Sys_Printf("Corrupt point file, line %d\n",line);
+                       break;
+    }
+
+       while (*data && *data != '\n')
+    {
+      if (*(data-1) == ' ' && *(data) == '-' && *(data+1) == ' ')
+        break;
+                 data++;
+    }
+    // deal with zhlt style point files.
+    if (*data == '-')
+    {
+      if (sscanf(data,"- %f %f %f", &v[0], &v[1], &v[2]) != 3)
+      {
+        Sys_Printf("Corrupt point file, line %d\n",line);
+        break;
+      }
+
+      while (*data && *data != '\n')
+                   data++;
+
+    }
+    while (*data == '\n')
+    {
+      data++; // skip the \n
+      line++;
+    }
+               g_pointfile.PushPoint (v);
+       }
+
+  g_free(text);
+       
+       g_pointfile.GenerateDisplayList();
+
+  Sys_UpdateWindows (W_ALL);
+}
+
+void Pointfile_Draw( void )
+{
+  qglCallList (g_qeglobals.d_pointfile_display_list);
+}
+
+void Pointfile_Clear (void)
+{
+       if (!g_qeglobals.d_pointfile_display_list)
+               return;
+
+       qglDeleteLists (g_qeglobals.d_pointfile_display_list, 1);
+       g_qeglobals.d_pointfile_display_list = 0;
+       Sys_UpdateWindows (W_ALL);
+}
+
+// CPointfile implementation for SAX speicific stuff -------------------------------
+void CPointfile::saxStartElement (message_info_t *ctx, const xmlChar *name, const xmlChar **attrs)
+{
+  if (strcmp ((char *)name, "polyline")==0)
+  {
+    Init();
+    // there's a prefs setting to avoid stopping on leak
+    if (!g_PrefsDlg.m_bLeakStop)
+      ctx->stop_depth = 0;
+  }
+}
+
+void CPointfile::saxEndElement (message_info_t *ctx, const xmlChar *name)
+{
+  if (strcmp ((char *)name, "polyline")==0)
+  {
+    // we are done
+    GenerateDisplayList();
+    ctx->bGeometry = false;
+  }
+}
+
+// only "point" is expected to have characters around here
+void CPointfile::saxCharacters (message_info_t *ctx, const xmlChar *ch, int len)
+{
+  vec3_t v;
+  
+  sscanf ((char *)ch, "%f %f %f\n", &v[0], &v[1], &v[2]);
+  PushPoint (v);
+}
+
+char * CPointfile::getName()
+{
+  return "Map is leaked";
+}