fix spelling
This commit is contained in:
parent
5efe29d863
commit
6c00419653
|
|
@ -21,7 +21,7 @@ that we distribute with the binaries. (see changelog)
|
|||
- Fixed another texcompression bug
|
||||
|
||||
25/04/2007
|
||||
- Fixed texcompression beeing disabled after each restart
|
||||
- Fixed texcompression being disabled after each restart
|
||||
- Fixed gtk-searchpopup in treeviews
|
||||
|
||||
15/04/2007
|
||||
|
|
@ -1055,7 +1055,7 @@ SPoG
|
|||
07/09/2004
|
||||
Michael Schlueter
|
||||
- Removed unused source files - qsysprintf, gtkfilesel.
|
||||
- Changed linux exectuable-path resolution to use '/proc/self/exe'.
|
||||
- Changed linux executable-path resolution to use '/proc/self/exe'.
|
||||
- Changed 'file exists, overwrite?' prompt to default to 'no'.
|
||||
|
||||
06/09/2004
|
||||
|
|
@ -1430,7 +1430,7 @@ Nurail
|
|||
30/04/2004
|
||||
SPoG
|
||||
- Changed texture window not to auto-scroll when selecting faces.
|
||||
- Changed surface inspector to apply shader seperately from shift/scale/rotate.
|
||||
- Changed surface inspector to apply shader separately from shift/scale/rotate.
|
||||
- Changed selected face tracking to use separate selection list.
|
||||
|
||||
26/04/2004
|
||||
|
|
@ -1544,7 +1544,7 @@ SPoG
|
|||
- Removed modal buttons from Surface Inspector.
|
||||
- Changed Surface Inspector keys:
|
||||
- Escape: revert not-yet-committed values to previous state.
|
||||
- Enter: commit not-yet-committed values immediatly.
|
||||
- Enter: commit not-yet-committed values immediately.
|
||||
- Changed Surface Inspector to update when selection changes.
|
||||
|
||||
31/01/2004
|
||||
|
|
@ -2601,7 +2601,7 @@ SPoG - spog_branch - experimental - work-in-progress
|
|||
- added scene graph traversals to replace all traversals of 'active_brushes',
|
||||
'selected_brushes', 'filtered_brushes' and 'entities' linked-lists.
|
||||
- added view module: view-volume-culling system acting on the scene graph,
|
||||
uses scene heirarchy to minimise culling tests per frame.
|
||||
uses scene hierarchy to minimise culling tests per frame.
|
||||
- added opengl-state module: sorts opengl-state objects (shaders) to minimise
|
||||
opengl state changes during rendering.
|
||||
- added renderer module: culls objects outside the view volume,
|
||||
|
|
@ -2665,7 +2665,7 @@ from the code conventions:
|
|||
All headers that describe synapse APIs should start with an i: ishader.h igl.h
|
||||
|
||||
The few files in include/ that don't start with a lowercase i are specific files for build control and configuration.
|
||||
Regular developement never creates non i-prefixed files in include/
|
||||
Regular development never creates non i-prefixed files in include/
|
||||
|
||||
the merge with IDataStream goes like this (note the corrected class names):
|
||||
class IInputStream
|
||||
|
|
@ -2728,7 +2728,7 @@ SPoG
|
|||
Added method to check if a file exists quickly.
|
||||
Added method to traverse the filesystem with control on start-dir and depth of recursion.
|
||||
- Defined implementation requirements for IArchive.
|
||||
An archive contains a heirarchy of directories and files, and may contain empty directories.
|
||||
An archive contains a hierarchy of directories and files, and may contain empty directories.
|
||||
An archive can be traversed in directory order.
|
||||
Directories can be distinguished from files during a traversal.
|
||||
Directory paths will always end with a separator.
|
||||
|
|
@ -2815,8 +2815,8 @@ TTimo
|
|||
28/11/2003
|
||||
ydnar
|
||||
- full SCC purge of the vs.net project files (for real this time)
|
||||
- added seperate Q3Map2 build targets
|
||||
- added seperate Q3Map2 post-build Python script
|
||||
- added separate Q3Map2 build targets
|
||||
- added separate Q3Map2 post-build Python script
|
||||
- _skybox entity support
|
||||
- _skybox and _decal in entities.def (Q3)
|
||||
|
||||
|
|
@ -2916,7 +2916,7 @@ Some jpegs get garbaged alpha channel
|
|||
14/10/2003
|
||||
TTimo
|
||||
- http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=879
|
||||
fixed hellish dlclose issue only occuring with holy builds
|
||||
fixed hellish dlclose issue only occurring with holy builds
|
||||
|
||||
-- released 1.3.12 win32
|
||||
-- end merge
|
||||
|
|
@ -3065,8 +3065,8 @@ Nurail
|
|||
Nurail & TTimo
|
||||
- http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=856
|
||||
a surface inspector module to customize per-game API
|
||||
removing DO_SURFACEPLUGIN define (enabled implicitely)
|
||||
removing bSurfacePropertiesPlugin (true implicitely)
|
||||
removing DO_SURFACEPLUGIN define (enabled implicitly)
|
||||
removing bSurfacePropertiesPlugin (true implicitly)
|
||||
remove SI_SetActiveInRadiant, it's always on by default
|
||||
why was USE_UNDOTABLE_DEFINE taken out? - put back in
|
||||
removed DBG_PLUGIN define and related code, that stuff is from way back and no longer relevant
|
||||
|
|
@ -3655,7 +3655,7 @@ SPoG
|
|||
- Removed or #ifdef'd non-functional code from model module.
|
||||
- Added support for misc_gamemodel and model_static to entity module.
|
||||
- Cleaned up entity module's on-epair-changed API.
|
||||
- Moved light-entity-specific code to a seperate file in entity module.
|
||||
- Moved light-entity-specific code to a separate file in entity module.
|
||||
- Cleaned up file dialog interface - specify file-type-lists with a string.
|
||||
|
||||
22/12/2002
|
||||
|
|
@ -3689,7 +3689,7 @@ TTimo
|
|||
TTimo
|
||||
- having the linux version compile and start again. took out numerous elements while merging, built a list of TODO stuff
|
||||
the main thing to do being to bring the win32 build back up too, then to go through TODO list and fix stuff
|
||||
until the win32 version runs too, I check this in to a seperate branch merge-1_2_10-post
|
||||
until the win32 version runs too, I check this in to a separate branch merge-1_2_10-post
|
||||
- There is quite a massive update in mainframe.cpp switch case for all events.
|
||||
Looks like it's just a reordering of stuff, but it looks bad in the diffs.
|
||||
- added m_MapReg pattern
|
||||
|
|
@ -3883,7 +3883,7 @@ TTimo
|
|||
mouse AngleSpeed setting was getting clobbered. fixed and upped the max values
|
||||
- http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=623
|
||||
applied a fix, rolls back the values when the compression formats are not supported
|
||||
fix ain't very clean, if we have to deal with extensions some more, we need to deal with the settings persistance better
|
||||
fix ain't very clean, if we have to deal with extensions some more, we need to deal with the settings persistence better
|
||||
- http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=624
|
||||
updated the setup code for town_*.shader (both in full setup and update)
|
||||
updated files in WolfPack
|
||||
|
|
@ -3942,7 +3942,7 @@ TTimo
|
|||
cons -- gcc=<gcc-name>
|
||||
read gcc version and configure accordingly
|
||||
changed _NO_STLPORT to Q_NO_STLPORT
|
||||
independant BASE_CFLAGS and BASE_CXXFLAGS
|
||||
independent BASE_CFLAGS and BASE_CXXFLAGS
|
||||
correcting usage of CC/CXX for c/cpp source and linking
|
||||
fixed missing -lz in vfspk3.so
|
||||
changed the way we build curry.so, works from the GtkRadiant tree now
|
||||
|
|
@ -3952,7 +3952,7 @@ TTimo
|
|||
04/11/2002
|
||||
TTimo
|
||||
- http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=638
|
||||
.qe4 version 4, udpated q3's .qe4 template, update setup to put q3map2 in the right place
|
||||
.qe4 version 4, updated q3's .qe4 template, update setup to put q3map2 in the right place
|
||||
bumped version to 1.2.11-test for test setups
|
||||
|
||||
03/11/2002
|
||||
|
|
@ -4036,12 +4036,12 @@ TTimo
|
|||
Note: This only matters in SOF2/JK2 now. Make a light targetted (a spotlight)
|
||||
to get it to aim the correct direction, otherwise it defaults to pointing
|
||||
downward. You cannot have omnidirectional flares
|
||||
- Lightgrid size is automatically increased to accomodate large maps. The
|
||||
- Lightgrid size is automatically increased to accommodate large maps. The
|
||||
MAX_MAP_LIGHTGRID error will never happen again
|
||||
- Update PicoModel to 0.8.7 sources
|
||||
- ASE support
|
||||
- Alias|Wavefront OBJ support
|
||||
- <modelname>.remap shader remapping suport
|
||||
- <modelname>.remap shader remapping support
|
||||
- http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=655
|
||||
handle grayscale jpegs gracefully
|
||||
- mathlib: fixed VectorClear(), got rid of braces
|
||||
|
|
@ -4171,12 +4171,12 @@ TTimo
|
|||
ESelectedPatches.
|
||||
+ Changed the horizontal and vertical tc shift spin control to have a
|
||||
limit of 8192.
|
||||
+ Moved SPoG's implementation of redisperse cols to a seperate function
|
||||
+ Moved SPoG's implementation of redisperse cols to a separate function
|
||||
and reinstated the old code.
|
||||
+ Added 'Paste to Camera', shortcut Alt+V, which pastes the contents of
|
||||
the clipboard to the current camera origin.
|
||||
+ Added centerview functionality to 4 window mode. Ctrl+tab will focus
|
||||
on the selection, or if non existant, on the camera.
|
||||
on the selection, or if non existent, on the camera.
|
||||
|
||||
11-09-2002
|
||||
Arnout <rr2do2@splashdamage.com>
|
||||
|
|
@ -4461,7 +4461,7 @@ END -- merging release-1_2_9 -> merge-post-1_2_10 into trunk - END
|
|||
TTimo
|
||||
- spritemodels in build system
|
||||
- applying HL setup patch (att 270, bug 197)
|
||||
- the templating went one filename seperator too far, causing all *.fgl to be modified ..
|
||||
- the templating went one filename separator too far, causing all *.fgl to be modified ..
|
||||
fixed so that we only have the relevant changes
|
||||
- modules added to main Executable Files, TODO for later will need to identify what is HL specific
|
||||
- .game generation: don't want enginename yet, gamename is ok
|
||||
|
|
@ -4560,7 +4560,7 @@ END -- merging release-1_2_9 -> merge-post-1_2_10 into trunk - END
|
|||
|
||||
27/5/2002
|
||||
Hydra
|
||||
- Created an inital implementation of a sprite model plugin.
|
||||
- Created an initial implementation of a sprite model plugin.
|
||||
According to the powers that be, it seems creating a model
|
||||
plugin is hackish.
|
||||
It works ok, but there is no way to attach models (sprites if you will)
|
||||
|
|
@ -5072,7 +5072,7 @@ END -- merging release-1_2_9 -> merge-post-1_2_10 into trunk - END
|
|||
TTimo
|
||||
- patching in Hydra's code for Half-Life, builds and runs on Linux, need to quickfix on win32 now
|
||||
- build system on Linux: some things are still hardcoded into the core, you need a different core
|
||||
for Q3/RTCW or HL for now. do ./cons -- halflife to build HL mode (build trees are seperate)
|
||||
for Q3/RTCW or HL for now. do ./cons -- halflife to build HL mode (build trees are separate)
|
||||
- there is no media / install procedure yet, but a zip with what you may need for install is available:
|
||||
http://zerowing.idsoftware.com/stuff/HL-media-0329.zip
|
||||
- cvs added all the new files
|
||||
|
|
@ -5134,7 +5134,7 @@ END -- merging release-1_2_9 -> merge-post-1_2_10 into trunk - END
|
|||
|
||||
- Fixed incorrect line numbers being reported when script files had // comments in them
|
||||
- Removed EClass_Create from the EClass manager _EClassManagerTable
|
||||
- Replaced all occurences of "textures/radiant/notex" in shaders.cpp with a define.
|
||||
- Replaced all occurrences of "textures/radiant/notex" in shaders.cpp with a define.
|
||||
- Fixed a crash in shaders.cpp when there was no default texture.
|
||||
- Fixed a possible issue with g_bCancel_Map_LoadFile
|
||||
- Added a crash fix for uninitialised patchMesh_t->pSymbiot
|
||||
|
|
@ -5299,7 +5299,7 @@ END -- merging release-1_2_9 -> merge-post-1_2_10 into trunk - END
|
|||
+++ radiant/select.h 25 Mar 2002 11:39:27 -0000
|
||||
- cleanup interface for entity selection-grouping/ungrouping utlities
|
||||
+++ radiant/undo.cpp 25 Mar 2002 11:39:29 -0000
|
||||
- removed workaround for wierd entity_clone behaviour (changed in entity module)
|
||||
- removed workaround for weird entity_clone behaviour (changed in entity module)
|
||||
- avoid using Entity_FreeEpairs (not exposed by entity module)
|
||||
+++ radiant/xywindow.cpp 25 Mar 2002 11:39:35 -0000
|
||||
- const fixes
|
||||
|
|
@ -5565,7 +5565,7 @@ END -- merging release-1_2_9 -> merge-post-1_2_10 into trunk - END
|
|||
- http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=308
|
||||
added preference to allow 'paint drag-select' brushes/faces in 3d camera view
|
||||
- http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=389
|
||||
added preference to strafe camera foward/back in 3d view while freelook is active
|
||||
added preference to strafe camera forward/back in 3d view while freelook is active
|
||||
|
||||
ETG & RR2DO2
|
||||
- http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=388
|
||||
|
|
@ -5633,7 +5633,7 @@ END -- merging release-1_2_9 -> merge-post-1_2_10 into trunk - END
|
|||
New entity keys:
|
||||
- "_lightmapscale" key for brush entities (worldspawn, func_*). This lets a mapper scale the lightmap samplesize per-entity. For large constructions, 2.0 or 3.0 is a fine value, and keeps BSP size down and compile times low. For those areas you want to have high-detail shadows, make a func_group and use a value of 0.25 or so. It will scale the samplesize value for the surface's shader (default 16) or the -samplesize argument.
|
||||
- "modelscale" and "modelscale_vec" keys for misc_models (1.0 = default). This was for proper RTCW support and is available for Quake 3 maps as well. Lets you scale up map models in the world, getting around the MD3 size limitation. The next build of GtkRadiant has SPoG's code to support this in-editor so you can see what effect a scale has.
|
||||
- Flare surfaces are now supressed from the BSP. They serve no purpose other than add to the vert & surfacecount in a BSP. These surfaces were created silently when a shader has "light 1" or "q3map_flareshader X." Use the new -flares switch when BSPing your map to have them emitted.
|
||||
- Flare surfaces are now suppressed from the BSP. They serve no purpose other than add to the vert & surfacecount in a BSP. These surfaces were created silently when a shader has "light 1" or "q3map_flareshader X." Use the new -flares switch when BSPing your map to have them emitted.
|
||||
|
||||
Changes:
|
||||
- GtkRadiant 1.2.4-nightly version increment.
|
||||
|
|
@ -5737,7 +5737,7 @@ END -- merging release-1_2_9 -> merge-post-1_2_10 into trunk - END
|
|||
added modelscale key check to misc_model entity in md3/entity module
|
||||
added angle key check to eclassmodel class in md3/entity module
|
||||
fixed bugs in BP writing and reading in map module
|
||||
TTimo (commited as SPoG)
|
||||
TTimo (committed as SPoG)
|
||||
- fixing permissions on cvsreport and doxygen stuff, upgraded dot
|
||||
|
||||
23/1/2002
|
||||
|
|
@ -5940,7 +5940,7 @@ END -- merging release-1_2_9 -> merge-post-1_2_10 into trunk - END
|
|||
TTimo
|
||||
- merge gameselect branch back into trunk
|
||||
the IS setup scripts have been updated for the new paths layout
|
||||
developement environment needs to be updated to copy binaries to the right places for debug
|
||||
development environment needs to be updated to copy binaries to the right places for debug
|
||||
it is recommended to run a 1.2.1 setup on win32 prior to compile and install debug bins
|
||||
- updated the setup to be more templated for inclusion/non inclusion of game packs on demand
|
||||
|
||||
|
|
@ -6102,7 +6102,7 @@ END -- merging release-1_2_9 -> merge-post-1_2_10 into trunk - END
|
|||
since we check for .pid even before we know where the GameTools path is
|
||||
|
||||
on linux, we need to sanitize the ~/.q3a dir usage. Switch to ~/.radiant, use the version tag
|
||||
to maintain things independant, and use the game name to isolate per-game settings?
|
||||
to maintain things independent, and use the game name to isolate per-game settings?
|
||||
~/.radiant/1.2.0-nightly/quake3/radiant.ini (.pid, .log)
|
||||
~/.radiant/1.2.0-nightly/wolf/..
|
||||
|
||||
|
|
@ -6116,7 +6116,7 @@ END -- merging release-1_2_9 -> merge-post-1_2_10 into trunk - END
|
|||
- replaced setup/win32/setup.sh by setup/win32/setup.pl
|
||||
same functionality level + abiliy to generate back a template from a work version
|
||||
- major rework on the IS scripts, basics of multiple games support installer
|
||||
clean seperation between editor core and game pack
|
||||
clean separation between editor core and game pack
|
||||
design doc and analysis of custom setup generation, setup script UI requierements
|
||||
see setup/win32/TODO for more details
|
||||
|
||||
|
|
@ -6459,14 +6459,14 @@ END -- merging release-1_2_9 -> merge-post-1_2_10 into trunk - END
|
|||
|
||||
10/09/2001
|
||||
TTimo
|
||||
- patched contrib plugins, using seperate build scheme
|
||||
- patched contrib plugins, using separate build scheme
|
||||
- fixed textool issues, compiles again
|
||||
|
||||
09/09/2001
|
||||
TTimo
|
||||
- sub-menu cascading
|
||||
http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=178
|
||||
- udpated the Q3Radiant manual with some new GtkRadiant stuff
|
||||
- updated the Q3Radiant manual with some new GtkRadiant stuff
|
||||
- updated the FAQ with 1.1.1 known issues
|
||||
Gef
|
||||
- http://zerowing.idsoftware.com/bugzilla/show_bug.cgi?id=174
|
||||
|
|
@ -6664,7 +6664,7 @@ END -- merging release-1_2_9 -> merge-post-1_2_10 into trunk - END
|
|||
around 15/08/2001
|
||||
TTimo
|
||||
quakecon fixes: switched to long filenames in project and misc_model dialogs,
|
||||
removed all occurences of win32 conversion to old 8.3 filenames
|
||||
removed all occurrences of win32 conversion to old 8.3 filenames
|
||||
NOTE: this might raise some bugs and issues, but it's the way to go for the future,
|
||||
already fixes more issues than it creates
|
||||
|
||||
|
|
@ -6787,7 +6787,7 @@ around 15/08/2001
|
|||
|
||||
30/05/2001
|
||||
TTimo
|
||||
- added libxml2 as an external dependency. libxml2 should be installed as a seperate
|
||||
- added libxml2 as an external dependency. libxml2 should be installed as a separate
|
||||
directory on win32. dynamic linking now instead of static previously.
|
||||
- cleaned up q3map win32 project file, removed opengl dependency
|
||||
(the drawflag command line is inoperant now .. I don't think it was used anyway?)
|
||||
|
|
@ -6865,12 +6865,12 @@ around 15/08/2001
|
|||
- STL in GtkRadiant or a plugin must now use STLPort
|
||||
a custom configured version of STLPort is available at http://zerowing.idsoftware.com/STLPort
|
||||
still need to write some guidelines about it
|
||||
bascially, we are using STL: iostreams disabled, no namespace, no threading, no exceptions
|
||||
basically, we are using STL: iostreams disabled, no namespace, no threading, no exceptions
|
||||
|
||||
30/05/2001
|
||||
TTimo
|
||||
- removed libxml2 from tree, use a seperate libxml2/ directory next to GtkRadiant/ for win32
|
||||
libxml2 will be distributed seperately as an archive based on official release (same as win32 Gtk SDK)
|
||||
- removed libxml2 from tree, use a separate libxml2/ directory next to GtkRadiant/ for win32
|
||||
libxml2 will be distributed separately as an archive based on official release (same as win32 Gtk SDK)
|
||||
(check on zerowing for the latest archive)
|
||||
libxml2 is now used as dynamic shared object on win32, makes sense since many module will rely on it
|
||||
- cleaned q3map, removed GL dependencies
|
||||
|
|
@ -7991,7 +7991,7 @@ around 15/08/2001
|
|||
14/08/2000 TTimo
|
||||
- using profile.cpp code to read shortcut keys files
|
||||
- moved DevDocs/changelog.txt to data/changelog.txt
|
||||
(data/ should be used for user-side stuff and DevDocs/ for developpers)
|
||||
(data/ should be used for user-side stuff and DevDocs/ for developers)
|
||||
- added data/quickstart.txt with a beginning of info about the main differences
|
||||
between Q3Radiant 202 and GtkRadiant. to be used as a doc later.
|
||||
|
||||
|
|
|
|||
2
TODO
2
TODO
|
|
@ -20,7 +20,7 @@ FEATURES
|
|||
|
||||
- paint-select or equivalent (e.g. area-selection with occlusion)
|
||||
- select-complete-tall or equivalent (e.g. subtract-from-selection modifier key)
|
||||
- texture pane names are often illegible, becuase 1. they are long and overlap each other and 2. they overlap the outline rectangles around the images themselves.
|
||||
- texture pane names are often illegible, because 1. they are long and overlap each other and 2. they overlap the outline rectangles around the images themselves.
|
||||
|
||||
|
||||
Build: document build-menu xml format.
|
||||
|
|
|
|||
|
|
@ -250,7 +250,7 @@ CBackgroundDialogPage::CBackgroundDialogPage( VIEWTYPE vt ){
|
|||
g_signal_connect( G_OBJECT( w ), "value-changed",
|
||||
G_CALLBACK( alpha_adjust_callback ), ( gpointer ) this );
|
||||
gtk_box_pack_start( GTK_BOX( hbox ),w, TRUE, TRUE, 5 );
|
||||
gtk_widget_set_tooltip_text( w, "Set image transparancy" );
|
||||
gtk_widget_set_tooltip_text( w, "Set image transparency" );
|
||||
gtk_widget_show( w );
|
||||
|
||||
gtk_widget_show( hbox );
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ Usage:
|
|||
|
||||
- Use the toggle buttons to show or hide the loaded images. The buttons will
|
||||
press or unpress whenever you click them, but an image will only be
|
||||
displayed once you have successfully loaded a file and set its size/postion.
|
||||
displayed once you have successfully loaded a file and set its size/position.
|
||||
|
||||
- Set the opacity of the image using the slider in the configuration dialog.
|
||||
|
||||
|
|
@ -117,7 +117,7 @@ TODO:
|
|||
- render under the grid instead of blending
|
||||
- mac/*nix support
|
||||
- remember/save/restore settings
|
||||
- texture options independant of radiant prefs
|
||||
- texture options independent of radiant prefs
|
||||
- clean up icky code
|
||||
|
||||
Changes from 0.1
|
||||
|
|
|
|||
|
|
@ -384,7 +384,7 @@ void DoPathPlotter(){
|
|||
if ( entity != 0 )
|
||||
DBobView_setEntity( *entity, rs.fMultiplier, rs.nPoints, rs.fGravity, rs.bNoUpdate, rs.bShowExtra );
|
||||
else
|
||||
globalErrorStream() << "bobToolz PathPlotter: No trigger_push entitity selected, select 1 only (Use list to select it).\n";
|
||||
globalErrorStream() << "bobToolz PathPlotter: No trigger_push entity selected, select 1 only (Use list to select it).\n";
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ Added:
|
|||
(16.05.01)
|
||||
Impemented a little feature that highligths the q3map bug that is causing problems for autocaulk, (see readme)
|
||||
(01.04.01)
|
||||
Added DPatch class to implement patches, however radiant does not (currently) support adding patches to an entity via a plugin, so, its actually redundant atm, i was adding this to fix the patches being removed from entities probelm with dealing with entities outside of the worldspawn.
|
||||
Added DPatch class to implement patches, however radiant does not (currently) support adding patches to an entity via a plugin, so, its actually redundant atm, i was adding this to fix the patches being removed from entities problem with dealing with entities outside of the worldspawn.
|
||||
|
||||
Changes:
|
||||
(02.04.01)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// Requries parts of the q3 tools source to compile
|
||||
// Requires parts of the q3 tools source to compile
|
||||
// Date: Oct 5, 2001
|
||||
// Written by: Brad Whitehead (whiteheb@gamerstv.net)
|
||||
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ void DoLoadCamera(){
|
|||
else {
|
||||
char error[PATH_MAX + 64];
|
||||
FreeCam( cam );
|
||||
sprintf( error, "An error occured during the loading of \'%s\'", fullpathtofile );
|
||||
sprintf( error, "An error occurred during the loading of \'%s\'", fullpathtofile );
|
||||
g_FuncTable.m_pfnMessageBox( (GtkWidget *)g_pRadiantWnd, error, "Load error", eMB_OK );
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1661,7 +1661,7 @@ UML_LOOK = NO
|
|||
# the class node. If there are many fields or methods and many nodes the
|
||||
# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS
|
||||
# threshold limits the number of items for each type to make the size more
|
||||
# managable. Set this to 0 for no limit. Note that the threshold may be
|
||||
# manageable. Set this to 0 for no limit. Note that the threshold may be
|
||||
# exceeded by 50% before the limit is enforced.
|
||||
|
||||
UML_LIMIT_NUM_FIELDS = 10
|
||||
|
|
|
|||
|
|
@ -146,7 +146,7 @@ GenericDialog::Hide()
|
|||
}
|
||||
|
||||
/**
|
||||
* Default handler for Apply logic. This method should be overriden by
|
||||
* Default handler for Apply logic. This method should be overridden by
|
||||
* subclass implementations that need to execute some logic when OK or Apply
|
||||
* is clicked. The return value should be the success of that logic. A
|
||||
* successful OK will cause the window to be hidden.
|
||||
|
|
|
|||
|
|
@ -130,9 +130,9 @@ PluginModule::QERPluginGetCommandTitleList()
|
|||
* Invoke a plugin command.
|
||||
*
|
||||
* @param command The command token.
|
||||
* @param vMin 3-element float vector definining min corner of
|
||||
* @param vMin 3-element float vector defining min corner of
|
||||
* selection.
|
||||
* @param vMax 3-element float vector definining max corner of
|
||||
* @param vMax 3-element float vector defining max corner of
|
||||
* selection.
|
||||
* @param bSingleBrush Dummy arg; ignored.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
Put PrtView.dll in the Q3Radiant plugins directory.
|
||||
|
||||
This program is pretty self explanitary, but point needs to
|
||||
This program is pretty self explanatory, but point needs to
|
||||
be mentioned. In the configuration menu for 3D view options,
|
||||
the lines and polygons flags are tri-state. In the third state,
|
||||
the lines or polygons will only be drawn if the have the
|
||||
|
|
|
|||
|
|
@ -363,8 +363,8 @@ void MapCoordinator(){
|
|||
|
||||
globalOutputStream() << "SunPlug: calculating optimal coordinates\n"; // write to console that we are calculating the coordinates
|
||||
GetOptimalCoordinates( &levelBoundingBox ); // calculate optimal mapcoords with the dimensions of the level bounding box
|
||||
globalOutputStream() << "SunPlug: adviced mapcoordsmins=" << minX << " " << maxY << "\n"; // console info about mapcoordsmins
|
||||
globalOutputStream() << "SunPlug: adviced mapcoordsmaxs=" << maxX << " " << minY << "\n"; // console info about mapcoordsmaxs
|
||||
globalOutputStream() << "SunPlug: advised mapcoordsmins=" << minX << " " << maxY << "\n"; // console info about mapcoordsmins
|
||||
globalOutputStream() << "SunPlug: advised mapcoordsmaxs=" << maxX << " " << minY << "\n"; // console info about mapcoordsmaxs
|
||||
|
||||
spinner_adj_MinX = (GtkAdjustment *)gtk_adjustment_new( map_minX, -65536.0, 65536.0, 1.0, 5.0, 0 ); // create adjustment for value and range of minimum x value
|
||||
spinner_adj_MinY = (GtkAdjustment *)gtk_adjustment_new( map_minY, -65536.0, 65536.0, 1.0, 5.0, 0 ); // create adjustment for value and range of minimum y value
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ Actually deluxemaps being converted to tangentspace in StoreLigtmaps phase. "-de
|
|||
|
||||
- added "EmitMetaStats" printing in the end of BSP stage to show full meta statistics, not only for world. So all "_patchMeta 1" surfaces will be in it.
|
||||
|
||||
- added gametype-controlled structure fields for "-deluxe", "-subdivisions", "-nostyles", "-patchshadows". New "dq" (deluxequake), "prophecy" and "darkplaces" games uses them. Additionaly added "-nodeluxe", "-nopatchshadows", "-styles" to negate positive defaults.
|
||||
- added gametype-controlled structure fields for "-deluxe", "-subdivisions", "-nostyles", "-patchshadows". New "dq" (deluxequake), "prophecy" and "darkplaces" games uses them. Additionally added "-nodeluxe", "-nopatchshadows", "-styles" to negate positive defaults.
|
||||
|
||||
- Floodligting code is changed to handle custom surfaces. And "q3map_floodlight <red> <green> <blue> <distance> <brightness> <low_quality>" shader keyword was added. Per-surfaces floodlight code does not intersect with global floodlight done by -floodlight of _floodlight worldspawn key, their effects get summarized. This is good way to light up surfacelight surfaces, such as water.
|
||||
|
||||
|
|
|
|||
|
|
@ -205,7 +205,7 @@ Several map bugs can cause these 'solid' places in the AAS file.
|
|||
snapping in the q3map tool those tiny brush faces can be snapped out
|
||||
of existence. Such faces will not show up in Quake3 and you'll see
|
||||
tiny peek holes or slits where you can view through the geometry.
|
||||
Allign vertexes of and edges of adjacent brushes to remove and avoid
|
||||
Align vertexes of and edges of adjacent brushes to remove and avoid
|
||||
such tiny faces. Placing a clip brush in front of the face that is
|
||||
snapped out of existence will also remove the 'solid' area but ofcourse
|
||||
it's much better to remove the peek holes and slits.
|
||||
|
|
|
|||
|
|
@ -172,7 +172,7 @@ textures/skies/xtoxicsky_dm9
|
|||
<p>Surfaces rendered with the polygonOffset keyword are rendered slightly off the polygon's surface. This is typically used for wall markings and "decals." The distance between the offset and the polygon is fixed. It is not a variable in Quake III Arena.</p>
|
||||
<blockquote>
|
||||
<h4>Design Notes:</h4>
|
||||
<p>Use this for wall or floor markings, particularily for direction arrows for team games. Texture the brush with the decal shader on one face and the other faces with a nodraw shader. Then place the brush flush with the surface of the wall or floor.</p>
|
||||
<p>Use this for wall or floor markings, particularly for direction arrows for team games. Texture the brush with the decal shader on one face and the other faces with a nodraw shader. Then place the brush flush with the surface of the wall or floor.</p>
|
||||
<p>When using a _decal entity for texture projection, polygonOffset must be used to prevent Z-fighting. If you experience problems with depth sorting, try using sort 6.</p>
|
||||
</blockquote>
|
||||
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@
|
|||
<p>Read as "do not enter". Like clusterportal, this is a bot-only property. A brush marked with donotenter will not affect non-bot players, but bots will not enter it. It should be used only when bots appear to have difficulty navigating around some map features. This does not physically stop the bot from entering a region (as with botclip). Bots will not enter the area on their own but may, for example, be blasted into the region with a rocket launcher. This keyword is found in "common/donotenter" so you shouldn't need to specify this.</p>
|
||||
<blockquote>
|
||||
<h4>Design Notes:</h4>
|
||||
<p>donotenter can be (sparingly) used in space maps around the void or around lava/slime in certain places where bots have an overwhelming tendancy to commit suicide (lemming style).</p>
|
||||
<p>donotenter can be (sparingly) used in space maps around the void or around lava/slime in certain places where bots have an overwhelming tendency to commit suicide (lemming style).</p>
|
||||
</blockquote>
|
||||
|
||||
<h2 id="dust">surfaceparm dust</h2>
|
||||
|
|
|
|||
|
|
@ -2088,7 +2088,7 @@ typedef unsigned int GLhandleARB;
|
|||
#include "gtkutil/glfont.h"
|
||||
|
||||
/// \brief A module which wraps a runtime-binding of the standard OpenGL functions.
|
||||
/// Provides convenience functions for querying availabiliy of extensions, rendering text and error-checking.
|
||||
/// Provides convenience functions for querying availability of extensions, rendering text and error-checking.
|
||||
struct OpenGLBinding
|
||||
{
|
||||
INTEGER_CONSTANT( Version, 2 );
|
||||
|
|
|
|||
|
|
@ -364,7 +364,7 @@ public:
|
|||
|
||||
|
||||
|
||||
//Now we just setup some texture paramaters.
|
||||
//Now we just setup some texture parameters.
|
||||
glBindTexture( GL_TEXTURE_2D, tex );
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
|
|
@ -791,7 +791,7 @@ GLFont *glfont_create( const char* font_string ){
|
|||
glPixelStorei( GL_UNPACK_ALIGNMENT, 1 );
|
||||
|
||||
glGenTextures( 1, &atlas );
|
||||
//Now we just setup some texture paramaters.
|
||||
//Now we just setup some texture parameters.
|
||||
glBindTexture( GL_TEXTURE_2D, atlas );
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
|
||||
|
|
|
|||
|
|
@ -131,7 +131,7 @@ public:
|
|||
}
|
||||
|
||||
/** need to reapply pos on every hiding to keep wnd pos after hide+show (flickering between two positions, if doing on showing)
|
||||
this stuff is weird: some wnds, like entity list, keep pos on hide/show... untill you resize them -)
|
||||
this stuff is weird: some wnds, like entity list, keep pos on hide/show... until you resize them -)
|
||||
some, like floating xy/cam/groupdialog do not; if you remove glwidget from floating xy - it does xD
|
||||
if you gtk_window_set_position( window, GTK_WIN_POS_CENTER_ALWAYS ), they do keep it, except of random centering after resizing (ms windows)
|
||||
but this option doesn't sound healthy;
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ int Net_Send( socket_t *sock, netmessage_t *msg ){
|
|||
return WINS_Write( sock->socket, msg->data, msg->size, NULL );
|
||||
} //end of the function Net_SendSocketReliable
|
||||
//===========================================================================
|
||||
// returns the number of bytes recieved
|
||||
// returns the number of bytes received
|
||||
// -1 on error
|
||||
//
|
||||
// Parameter: -
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ static unsigned long myAddr;
|
|||
|
||||
ERROR_STRUCT errlist[] = {
|
||||
{EACCES,"EACCES - The address is protected, user is not root"},
|
||||
{EAGAIN,"EAGAIN - Operation on non-blocking socket that cannot return immediatly"},
|
||||
{EAGAIN,"EAGAIN - Operation on non-blocking socket that cannot return immediately"},
|
||||
{EBADF, "EBADF - sockfd is not a valid descriptor"},
|
||||
{EFAULT, "EFAULT - The parameter is not in a writable part of the user address space"},
|
||||
{EINVAL,"EINVAL - The socket is already bound to an address"},
|
||||
|
|
|
|||
|
|
@ -183,7 +183,7 @@ int aabb_intersect_ray( const aabb_t *aabb, const ray_t *ray, vec3_t intersectio
|
|||
const float *direction = ray->direction;
|
||||
|
||||
/* Find candidate planes; this loop can be avoided if
|
||||
rays cast all from the eye(assume perpsective view) */
|
||||
rays cast all from the eye(assume perspective view) */
|
||||
for ( i = 0; i < NUMDIM; i++ )
|
||||
{
|
||||
if ( origin[i] < ( aabb->origin[i] - aabb->extents[i] ) ) {
|
||||
|
|
|
|||
|
|
@ -473,7 +473,7 @@ void NormalToLatLong( const vec3_t normal, byte bytes[2] ) {
|
|||
b &= 0xff;
|
||||
|
||||
bytes[0] = b; // longitude
|
||||
bytes[1] = a; // lattitude
|
||||
bytes[1] = a; // latitude
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -299,7 +299,7 @@ static int GetMeshVertices( T3dsLoaderPers *pers ){
|
|||
printf( "Vertex: x: %f y: %f z: %f\n",v[0],v[1],v[2] );
|
||||
#endif
|
||||
}
|
||||
/* success (no errors occured) */
|
||||
/* success (no errors occurred) */
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -334,7 +334,7 @@ static int GetMeshFaces( T3dsLoaderPers *pers ){
|
|||
printf( "Face: a: %d b: %d c: %d (%d)\n",face.a,face.b,face.c,face.visible );
|
||||
#endif
|
||||
}
|
||||
/* success (no errors occured) */
|
||||
/* success (no errors occurred) */
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -367,7 +367,7 @@ static int GetMeshTexCoords( T3dsLoaderPers *pers ){
|
|||
printf( "u: %f v: %f\n",uv[0],uv[1] );
|
||||
#endif
|
||||
}
|
||||
/* success (no errors occured) */
|
||||
/* success (no errors occurred) */
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -460,7 +460,7 @@ static int GetMeshShader( T3dsLoaderPers *pers ){
|
|||
{
|
||||
GetWord( pers );
|
||||
}
|
||||
/* success (no errors occured) */
|
||||
/* success (no errors occurred) */
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -483,7 +483,7 @@ static int GetDiffuseColor( T3dsLoaderPers *pers ){
|
|||
#ifdef DEBUG_PM_3DS
|
||||
printf( "GetDiffuseColor: %d %d %d\n",color[0],color[1],color[2] );
|
||||
#endif
|
||||
/* success (no errors occured) */
|
||||
/* success (no errors occurred) */
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -729,7 +729,7 @@ static picoModel_t *_3ds_load( PM_PARAMS_LOAD ){
|
|||
strncpy( basename, _pico_nopath( fileName ), sizeof( basename ) - 1 );
|
||||
_pico_setfext( basename, NULL );
|
||||
|
||||
/* initialize persistant vars (formerly static) */
|
||||
/* initialize persistent vars (formerly static) */
|
||||
pers.model = model;
|
||||
pers.bufptr = (picoByte_t *)_pico_alloc( bufSize );
|
||||
memcpy( pers.bufptr, buffer, bufSize );
|
||||
|
|
|
|||
|
|
@ -272,7 +272,7 @@ namespace quickhull {
|
|||
sphereTest();
|
||||
testVector3();
|
||||
testHalfEdgeOutput();
|
||||
std::cout << "QuickHull tests succesfully passed." << std::endl;
|
||||
std::cout << "QuickHull tests successfully passed." << std::endl;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -217,7 +217,7 @@ class ScriptTokeniser final : public Tokeniser
|
|||
pop();
|
||||
if ( state() == Tokenise( &ScriptTokeniser::tokeniseToken ) ) {
|
||||
pop();
|
||||
m_emit = true; // emit token immediatly preceding comment
|
||||
m_emit = true; // emit token immediately preceding comment
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
|
@ -236,7 +236,7 @@ class ScriptTokeniser final : public Tokeniser
|
|||
pop();
|
||||
if ( state() == Tokenise( &ScriptTokeniser::tokeniseToken ) ) {
|
||||
pop();
|
||||
m_emit = true; // emit token immediatly preceding comment
|
||||
m_emit = true; // emit token immediately preceding comment
|
||||
}
|
||||
break; // dont emit comment
|
||||
case '*':
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
#define __Q_SHARED_H
|
||||
|
||||
// q_shared.h -- included first by ALL program modules.
|
||||
// these are the definitions that have no dependance on
|
||||
// these are the definitions that have no dependence on
|
||||
// central system services, and can be used by any part
|
||||
// of the program without any state issues.
|
||||
|
||||
|
|
@ -262,7 +262,7 @@ typedef enum {
|
|||
|
||||
#define MAX_NAME_LENGTH 32 // max length of a client name
|
||||
|
||||
// paramters for command buffer stuffing
|
||||
// parameters for command buffer stuffing
|
||||
typedef enum {
|
||||
EXEC_NOW, // don't return until completed, a VM should NEVER use this,
|
||||
// because some commands might cause the VM to be unloaded...
|
||||
|
|
|
|||
|
|
@ -746,7 +746,7 @@ void idCameraDef::buildCamera() {
|
|||
newTotal /= count;
|
||||
int additive = newTotal;
|
||||
|
||||
// now propogate that difference out to each segment
|
||||
// now propagate that difference out to each segment
|
||||
for (j = index; j < cameraSpline.numSegments(); j++) {
|
||||
cameraSpline.addSegmentTime(j, additive);
|
||||
additive += newTotal;
|
||||
|
|
@ -1048,7 +1048,7 @@ const idVec3 *idInterpolatedPosition::getPosition( long t ) {
|
|||
percent = 0.0;
|
||||
}
|
||||
|
||||
// the following line does a straigt calc on percentage of time
|
||||
// the following line does a straight calc on percentage of time
|
||||
// float percent = (float)(startTime + time - t) / time;
|
||||
|
||||
idVec3 v1 = startPos;
|
||||
|
|
|
|||
|
|
@ -464,7 +464,7 @@ void idStr::snprintf
|
|||
TestStringClass
|
||||
|
||||
This is a fairly rigorous test of the idStr class's functionality.
|
||||
Because of the fairly global and subtle ramifications of a bug occuring
|
||||
Because of the fairly global and subtle ramifications of a bug occurring
|
||||
in this class, it should be run after any changes to the class.
|
||||
Add more tests as functionality is changed. Tests should include
|
||||
any possible bounds violation and NULL data tests.
|
||||
|
|
|
|||
|
|
@ -364,7 +364,7 @@ bool XmlTagBuilder::AddShaderTag( const char* shader, const char* content, NodeT
|
|||
int XmlTagBuilder::RenameShaderTag( const char* oldtag, CopiedString newtag ){
|
||||
/* Replaces tag node contents
|
||||
|
||||
char* oldtag - the <tag></tag> node content that sould be changed
|
||||
char* oldtag - the <tag></tag> node content that should be changed
|
||||
char* newtag - the new <tag></tag> node content
|
||||
|
||||
returns the number of renamed shaders
|
||||
|
|
|
|||
|
|
@ -180,7 +180,7 @@ bool MD5Anim_parse( Tokeniser& tokeniser ){
|
|||
MD5_RETURN_FALSE_IF_FAIL( MD5_parseSize( tokeniser, numAnimatedComponents ) );
|
||||
tokeniser.nextLine();
|
||||
|
||||
// parse heirarchy
|
||||
// parse hierarchy
|
||||
MD5_RETURN_FALSE_IF_FAIL( MD5_parseToken( tokeniser, "hierarchy" ) );
|
||||
MD5_RETURN_FALSE_IF_FAIL( MD5_parseToken( tokeniser, "{" ) );
|
||||
tokeniser.nextLine();
|
||||
|
|
|
|||
|
|
@ -1520,7 +1520,7 @@ GSList* Shaders_getShaderFileList(){
|
|||
/*
|
||||
==================
|
||||
DumpUnreferencedShaders
|
||||
usefull function: dumps the list of .shader files that are not referenced to the console
|
||||
useful function: dumps the list of .shader files that are not referenced to the console
|
||||
==================
|
||||
*/
|
||||
void IfFound_dumpUnreferencedShader( bool& bFound, const char* filename ){
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@
|
|||
|
||||
Implemented as a model module, without any ISelect stuff.
|
||||
|
||||
For an entity to use an image (instead of a model) you just update the entity defintion file so that the eclass_t's modelpath is filled in with a relative path and filename of an image file.
|
||||
For an entity to use an image (instead of a model) you just update the entity definition file so that the eclass_t's modelpath is filled in with a relative path and filename of an image file.
|
||||
|
||||
e.g:
|
||||
|
||||
|
|
@ -73,7 +73,7 @@
|
|||
===============
|
||||
|
||||
v0.1 - 27/May/2002
|
||||
- Created an inital implementation of a sprite model plugin.
|
||||
- Created an initial implementation of a sprite model plugin.
|
||||
According to the powers that be, it seems creating a model
|
||||
plugin is hackish.
|
||||
It works ok, but there is no way to attach models (sprites if you will)
|
||||
|
|
|
|||
|
|
@ -188,7 +188,7 @@ _QERFaceData g_SelectedFaceData;
|
|||
// g_pSelectedFaceWindings gets allocated with MAX_POINTS_ON_WINDING at plugin startup ( QERPlug_Init )
|
||||
winding_t *g_pSelectedFaceWinding = NULL;
|
||||
const float g_ViewportRatio = 1.2f;
|
||||
// usefull class to manage the 2D view
|
||||
// useful class to manage the 2D view
|
||||
C2DView g_2DView;
|
||||
// control points to move the polygon
|
||||
CControlPointsManagerBFace g_ControlPointsBFace;
|
||||
|
|
|
|||
|
|
@ -5,4 +5,4 @@ here is the TODO-list for next release, ( most certainly a wish list )
|
|||
- TODO: add hooks with the selected face and selected patch data. tell the plugin when selected face
|
||||
or selected patch has changed.
|
||||
the hooks should use a generic interface inside Radiant for "observers"
|
||||
- TODO: add other usefull texturing tools, if designers come up with good ideas
|
||||
- TODO: add other useful texturing tools, if designers come up with good ideas
|
||||
|
|
@ -528,12 +528,12 @@ public:
|
|||
}
|
||||
|
||||
void addScale(){
|
||||
ASSERT_MESSAGE( !m_scaleApplied, "texture scale aready added" );
|
||||
ASSERT_MESSAGE( !m_scaleApplied, "texture scale already added" );
|
||||
m_scaleApplied = true;
|
||||
m_projection.m_brushprimit_texdef.addScale( m_shader.width(), m_shader.height() );
|
||||
}
|
||||
void removeScale(){
|
||||
ASSERT_MESSAGE( m_scaleApplied, "texture scale aready removed" );
|
||||
ASSERT_MESSAGE( m_scaleApplied, "texture scale already removed" );
|
||||
m_scaleApplied = false;
|
||||
m_projection.m_brushprimit_texdef.removeScale( m_shader.width(), m_shader.height() );
|
||||
}
|
||||
|
|
|
|||
|
|
@ -798,7 +798,7 @@ void BrushPrimitFaceToFace( face_t *face ){
|
|||
// the general algorithm is the same for both lockings, it's only the geometric transformation part that changes
|
||||
// so I wanted to keep it in a single function
|
||||
// if there are more linear transformations that need the locking, going to a C++ or code pointer solution would be best
|
||||
// (but right now I want to keep brush_primit.cpp striclty C)
|
||||
// (but right now I want to keep brush_primit.cpp strictly C)
|
||||
|
||||
bool txlock_bRotation;
|
||||
|
||||
|
|
@ -819,7 +819,7 @@ void TextureLockTransformation_BrushPrimit( face_t *f ){
|
|||
|
||||
Vector3 rOrig,rvecS,rvecT; // geometric transformation of (0,0) (1,0) (0,1) { initial plane axis base }
|
||||
Vector3 rNormal,rtexS,rtexT; // axis base for the transformed plane
|
||||
Vector3 lOrig,lvecS,lvecT; // [2] are not used ( but usefull for debugging )
|
||||
Vector3 lOrig,lvecS,lvecT; // [2] are not used ( but useful for debugging )
|
||||
Vector3 M[3];
|
||||
float det;
|
||||
Vector3 D[2];
|
||||
|
|
@ -831,7 +831,7 @@ void TextureLockTransformation_BrushPrimit( face_t *f ){
|
|||
// compute coordinates of (0,0) (1,0) (0,1) ( expressed in initial plane axis base ) after transformation
|
||||
// (0,0) (1,0) (0,1) ( expressed in initial plane axis base ) <-> (0,0,0) texS texT ( expressed world axis base )
|
||||
// input: Orig, texS, texT (and the global locking params)
|
||||
// ouput: rOrig, rvecS, rvecT, rNormal
|
||||
// output: rOrig, rvecS, rvecT, rNormal
|
||||
if ( txlock_bRotation ) {
|
||||
// rotation vector
|
||||
VectorSet( vRotate, 0.0f, 0.0f, 0.0f );
|
||||
|
|
|
|||
|
|
@ -220,7 +220,7 @@ std::size_t Sys_Print( int level, const char* buf, std::size_t length ){
|
|||
}
|
||||
}
|
||||
|
||||
// update console widget immediatly if we're doing something time-consuming
|
||||
// update console widget immediately if we're doing something time-consuming
|
||||
if ( contains_newline ) {
|
||||
gtk_text_view_scroll_mark_onscreen( GTK_TEXT_VIEW( g_console ), end );
|
||||
|
||||
|
|
|
|||
|
|
@ -124,7 +124,7 @@ void Error( const char *error, ... ){
|
|||
}
|
||||
#endif
|
||||
|
||||
strcat( text, "An unrecoverable error has occured.\n" );
|
||||
strcat( text, "An unrecoverable error has occurred.\n" );
|
||||
|
||||
ERROR_MESSAGE( text );
|
||||
|
||||
|
|
|
|||
|
|
@ -705,7 +705,7 @@ EMessageBoxReturn DoTextureLayout( float *fx, float *fy ){
|
|||
sprintf( buf, "%f", last_used_texture_layout_scale_y );
|
||||
gtk_entry_set_text( y, buf );
|
||||
|
||||
// Set focus after intializing the values
|
||||
// Set focus after initializing the values
|
||||
gtk_widget_grab_focus( GTK_WIDGET( x ) );
|
||||
|
||||
EMessageBoxReturn ret = modal_dialog_show( window, dialog );
|
||||
|
|
|
|||
|
|
@ -2362,7 +2362,7 @@ void map_autocaulk_selected(){
|
|||
|
||||
TextFileOutputStream file( filename.c_str() );
|
||||
if ( file.failed() ) {
|
||||
globalErrorStream() << "writting " << filename.c_str() << " failure\n";
|
||||
globalErrorStream() << "writing " << filename.c_str() << " failure\n";
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1010,7 +1010,7 @@ gboolean ModelBrowser_button_press( GtkWidget* widget, GdkEventButton* event, Mo
|
|||
else if ( event->type == GDK_2BUTTON_PRESS && event->button == 1 && modelBrowser->m_currentFolder != nullptr && modelBrowser->m_currentModelId >= 0 ) {
|
||||
UndoableCommand undo( "insertModel" );
|
||||
// todo
|
||||
// GlobalEntityClassManager() seach for "misc_model"
|
||||
// GlobalEntityClassManager() search for "misc_model"
|
||||
// otherwise search for entityClass->miscmodel_is
|
||||
// otherwise go with GlobalEntityClassManager().findOrInsert( "misc_model", false );
|
||||
EntityClass* entityClass = GlobalEntityClassManager().findOrInsert( "misc_model", false );
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ GtkMenuItem* create_plugins_menu(){
|
|||
#if 0
|
||||
create_menu_item_with_mnemonic( menu, "Refresh", FreeCaller<Restart>() );
|
||||
|
||||
// NOTE: the seperator is used when doing a refresh of the list, everything past the seperator is removed
|
||||
// NOTE: the separator is used when doing a refresh of the list, everything past the separator is removed
|
||||
g_plugins_menu_separator = menu_separator( menu );
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -178,7 +178,7 @@ inline R LatchedImportCaller( LatchedValue<T>& latchedValue ){
|
|||
support for a new game)
|
||||
|
||||
what we do now is fully generate the information for this during the setup. We might want to
|
||||
generate a piece that just says "the game pack is there", but put the rest of the config somwhere
|
||||
generate a piece that just says "the game pack is there", but put the rest of the config somewhere
|
||||
else (i.e. not generated, copied over during setup .. for instance in the game tools directory)
|
||||
*/
|
||||
class CGameDescription
|
||||
|
|
@ -268,7 +268,7 @@ public:
|
|||
void AddPacksURL( StringOutputStream &s );
|
||||
|
||||
/*!
|
||||
intialize the game dialog, called at CPrefsDlg::Init
|
||||
initialize the game dialog, called at CPrefsDlg::Init
|
||||
will scan for games, load prefs, and do game selection dialog if needed
|
||||
*/
|
||||
void Init();
|
||||
|
|
|
|||
|
|
@ -527,7 +527,7 @@ private:
|
|||
Vector3 m_axis;
|
||||
Scalable& m_scalable;
|
||||
|
||||
Vector3 m_choosen_extent;
|
||||
Vector3 m_chosen_extent;
|
||||
AABB m_bounds;
|
||||
|
||||
public:
|
||||
|
|
@ -537,7 +537,7 @@ public:
|
|||
void Construct( const Matrix4& device2manip, const float x, const float y, const AABB& bounds, const Vector3& transform_origin ){
|
||||
m_start = point_on_axis( m_axis, device2manip, x, y );
|
||||
|
||||
m_choosen_extent = Vector3(
|
||||
m_chosen_extent = Vector3(
|
||||
std::max( bounds.origin[0] + bounds.extents[0] - transform_origin[0], - bounds.origin[0] + bounds.extents[0] + transform_origin[0] ),
|
||||
std::max( bounds.origin[1] + bounds.extents[1] - transform_origin[1], - bounds.origin[1] + bounds.extents[1] + transform_origin[1] ),
|
||||
std::max( bounds.origin[2] + bounds.extents[2] - transform_origin[2], - bounds.origin[2] + bounds.extents[2] + transform_origin[2] )
|
||||
|
|
@ -568,8 +568,8 @@ public:
|
|||
);
|
||||
/* try bbox way */
|
||||
for( std::size_t i = 0; i < 3; i++ ){
|
||||
if( m_choosen_extent[i] > 0.0625f && m_axis[i] != 0.f ){ //epsilon to prevent super high scale for set of models, having really small extent, formed by origins
|
||||
scale[i] = ( m_choosen_extent[i] + delta[i] ) / m_choosen_extent[i];
|
||||
if( m_chosen_extent[i] > 0.0625f && m_axis[i] != 0.f ){ //epsilon to prevent super high scale for set of models, having really small extent, formed by origins
|
||||
scale[i] = ( m_chosen_extent[i] + delta[i] ) / m_chosen_extent[i];
|
||||
if( snapbbox ){
|
||||
const float snappdwidth = float_snapped( scale[i] * m_bounds.extents[i] * 2.f, GetSnapGridSize() );
|
||||
scale[i] = snappdwidth / ( m_bounds.extents[i] * 2.f );
|
||||
|
|
@ -600,7 +600,7 @@ private:
|
|||
Vector3 m_axis2;
|
||||
Scalable& m_scalable;
|
||||
|
||||
Vector3 m_choosen_extent;
|
||||
Vector3 m_chosen_extent;
|
||||
AABB m_bounds;
|
||||
|
||||
public:
|
||||
|
|
@ -610,7 +610,7 @@ public:
|
|||
void Construct( const Matrix4& device2manip, const float x, const float y, const AABB& bounds, const Vector3& transform_origin ){
|
||||
m_start = point_on_plane( device2manip, x, y );
|
||||
|
||||
m_choosen_extent = Vector3(
|
||||
m_chosen_extent = Vector3(
|
||||
std::max( bounds.origin[0] + bounds.extents[0] - transform_origin[0], -( bounds.origin[0] - bounds.extents[0] - transform_origin[0] ) ),
|
||||
std::max( bounds.origin[1] + bounds.extents[1] - transform_origin[1], -( bounds.origin[1] - bounds.extents[1] - transform_origin[1] ) ),
|
||||
std::max( bounds.origin[2] + bounds.extents[2] - transform_origin[2], -( bounds.origin[2] - bounds.extents[2] - transform_origin[2] ) )
|
||||
|
|
@ -645,8 +645,8 @@ public:
|
|||
|
||||
//globalOutputStream() << "m_start: " << m_start << " start: " << start << " delta: " << delta <<"\n";
|
||||
for( std::size_t i = 0; i < 3; i++ ){
|
||||
if( m_choosen_extent[i] > 0.0625f && start[i] != 0.f ){
|
||||
scale[i] = ( m_choosen_extent[i] + delta[i] ) / m_choosen_extent[i];
|
||||
if( m_chosen_extent[i] > 0.0625f && start[i] != 0.f ){
|
||||
scale[i] = ( m_chosen_extent[i] + delta[i] ) / m_chosen_extent[i];
|
||||
if( snapbbox ){
|
||||
const float snappdwidth = float_snapped( scale[i] * m_bounds.extents[i] * 2.f, GetSnapGridSize() );
|
||||
scale[i] = snappdwidth / ( m_bounds.extents[i] * 2.f );
|
||||
|
|
|
|||
|
|
@ -652,7 +652,7 @@ typedef ReferenceCaller1<TextureBrowser, bool, TextureBrowser_importShowScrollba
|
|||
relies on texture_directory global for the directory to use
|
||||
1) Load the shaders for the given directory
|
||||
2) Scan the remaining texture, load them and assign them a default shader (the "noshader" shader)
|
||||
NOTE: when writing a texture plugin, or some texture extensions, this function may need to be overriden, and made
|
||||
NOTE: when writing a texture plugin, or some texture extensions, this function may need to be overridden, and made
|
||||
available through the IShaders interface
|
||||
NOTE: for texture window layout:
|
||||
all shaders are stored with alphabetical order after load
|
||||
|
|
|
|||
|
|
@ -83,8 +83,8 @@ class CWatchBSP
|
|||
{
|
||||
private:
|
||||
// a flag we have set to true when using an external BSP plugin
|
||||
// the resulting code with that is a bit dirty, cleaner solution would be to seperate the succession of commands from the listening loop
|
||||
// (in two seperate classes probably)
|
||||
// the resulting code with that is a bit dirty, cleaner solution would be to separate the succession of commands from the listening loop
|
||||
// (in two separate classes probably)
|
||||
bool m_bBSPPlugin;
|
||||
|
||||
// EIdle: we are not listening
|
||||
|
|
@ -166,7 +166,7 @@ CWatchBSP* g_pWatchBSP;
|
|||
// true: trigger the BSP steps one by one and monitor them through the network
|
||||
// false: create a BAT / .sh file and execute it. don't bother monitoring it.
|
||||
bool g_WatchBSP_Enabled = true;
|
||||
// do we stop the compilation process if we come accross a leak?
|
||||
// do we stop the compilation process if we come across a leak?
|
||||
bool g_WatchBSP_LeakStop = true;
|
||||
bool g_WatchBSP_RunQuake = false;
|
||||
bool g_WatchBSP0_DumpLog = false;
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ class ISAXHandler;
|
|||
// message_info also stores information to exit the stream listening cleanly with an error:
|
||||
// if msg_level == SYS_ERR, then we will reset the listening at the end of the current node
|
||||
// the level for stopping the feed is stored in stop_depth
|
||||
// unkown nodes are ignored, we use ignore_depth to track the level we start ignoring from
|
||||
// unknown nodes are ignored, we use ignore_depth to track the level we start ignoring from
|
||||
struct message_info_t
|
||||
{
|
||||
int msg_level; // current message level (SYS_MSG, SYS_WRN, SYS_ERR)
|
||||
|
|
|
|||
|
|
@ -65,8 +65,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
#define FACE_LADDER 2 //ladder
|
||||
#define FACE_GROUND 4 //standing on ground when in this face
|
||||
#define FACE_GAP 8 //gap in the ground
|
||||
#define FACE_LIQUID 16 //face seperating two areas with liquid
|
||||
#define FACE_LIQUIDSURFACE 32 //face seperating liquid and air
|
||||
#define FACE_LIQUID 16 //face separating two areas with liquid
|
||||
#define FACE_LIQUIDSURFACE 32 //face separating liquid and air
|
||||
#define FACE_BRIDGE 64 //can walk over this face if bridge is closed
|
||||
|
||||
//area contents
|
||||
|
|
@ -191,7 +191,7 @@ typedef struct aas_edge_s
|
|||
//edge index, negative if vertexes are reversed
|
||||
typedef int aas_edgeindex_t;
|
||||
|
||||
//a face bounds an area, often it will also seperate two areas
|
||||
//a face bounds an area, often it will also separate two areas
|
||||
typedef struct aas_face_s
|
||||
{
|
||||
int planenum; //number of the plane this face is in
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ typedef struct bsp_entity_s
|
|||
bsp_epair_t *epairs;
|
||||
} bsp_entity_t;
|
||||
|
||||
//id Sofware BSP data
|
||||
//id Software BSP data
|
||||
typedef struct bsp_s
|
||||
{
|
||||
//true when bsp file is loaded
|
||||
|
|
|
|||
|
|
@ -156,7 +156,7 @@ int AAS_UpdatePortal(int areanum, int clusternum)
|
|||
{
|
||||
//remove the cluster portal flag contents
|
||||
aasworld.areasettings[areanum].contents &= ~AREACONTENTS_CLUSTERPORTAL;
|
||||
Log_Write("portal area %d is seperating more than two clusters\r\n", areanum);
|
||||
Log_Write("portal area %d is separating more than two clusters\r\n", areanum);
|
||||
return false;
|
||||
} //end else
|
||||
if (aasworld.portalindexsize >= AAS_MAX_PORTALINDEXSIZE)
|
||||
|
|
@ -1172,7 +1172,7 @@ void AAS_RemoveNotClusterClosingPortals(void)
|
|||
if (aasworld.areasettings[otherareanum].contents & AREACONTENTS_CLUSTERPORTAL) continue;
|
||||
//if the area already has a cluster set
|
||||
if (aasworld.areasettings[otherareanum].cluster) continue;
|
||||
//another cluster is seperated by this portal
|
||||
//another cluster is separated by this portal
|
||||
numseperatedclusters++;
|
||||
//flood the cluster
|
||||
AAS_FloodCluster_r(otherareanum, numseperatedclusters);
|
||||
|
|
@ -1189,13 +1189,13 @@ void AAS_RemoveNotClusterClosingPortals(void)
|
|||
if (aasworld.areasettings[otherareanum].contents & AREACONTENTS_CLUSTERPORTAL) continue;
|
||||
//if the area already has a cluster set
|
||||
if (aasworld.areasettings[otherareanum].cluster) continue;
|
||||
//another cluster is seperated by this portal
|
||||
//another cluster is separated by this portal
|
||||
numseperatedclusters++;
|
||||
//flood the cluster
|
||||
AAS_FloodCluster_r(otherareanum, numseperatedclusters);
|
||||
AAS_FloodClusterReachabilities(numseperatedclusters);
|
||||
} //end for
|
||||
//a portal must seperate no more and no less than 2 clusters
|
||||
//a portal must separate no more and no less than 2 clusters
|
||||
if (numseperatedclusters != 2)
|
||||
{
|
||||
aasworld.areasettings[i].contents &= ~AREACONTENTS_CLUSTERPORTAL;
|
||||
|
|
|
|||
|
|
@ -1423,7 +1423,7 @@ int AAS_Reachability_Step_Barrier_WaterJump_WalkOffLedge(int area1num, int area2
|
|||
//if there IS water the sv_maxwaterjump height below the bestend point
|
||||
if (aasworld.areasettings[AAS_PointAreaNum(testpoint)].areaflags & AREA_LIQUID)
|
||||
{
|
||||
//don't create rediculous water jump reachabilities from areas very far below
|
||||
//don't create ridiculous water jump reachabilities from areas very far below
|
||||
//the water surface
|
||||
if (water_bestdist < aassettings.phys_maxwaterjump + 24)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -689,7 +689,7 @@ aas_trace_t AAS_TraceClientBBox(vec3_t start, vec3_t end, int presencetype,
|
|||
side = front < 0;
|
||||
//first put the end part of the line on the stack (back side)
|
||||
VectorCopy(cur_mid, tstack_p->start);
|
||||
//not necesary to store because still on stack
|
||||
//not necessary to store because still on stack
|
||||
//VectorCopy(cur_end, tstack_p->end);
|
||||
tstack_p->planenum = aasnode->planenum;
|
||||
tstack_p->nodenum = aasnode->children[!side];
|
||||
|
|
@ -875,7 +875,7 @@ int AAS_TraceAreas(vec3_t start, vec3_t end, int *areas, vec3_t *points, int max
|
|||
side = front < 0;
|
||||
//first put the end part of the line on the stack (back side)
|
||||
VectorCopy(cur_mid, tstack_p->start);
|
||||
//not necesary to store because still on stack
|
||||
//not necessary to store because still on stack
|
||||
//VectorCopy(cur_end, tstack_p->end);
|
||||
tstack_p->planenum = aasnode->planenum;
|
||||
tstack_p->nodenum = aasnode->children[!side];
|
||||
|
|
@ -960,7 +960,7 @@ qboolean AAS_InsideFace(aas_face_t *face, vec3_t pnormal, vec3_t point, float ep
|
|||
//edge) and through both the edge vector and the normal vector
|
||||
//of the plane
|
||||
AAS_OrthogonalToVectors(edgevec, pnormal, sepnormal);
|
||||
//check on wich side of the above plane the point is
|
||||
//check on which side of the above plane the point is
|
||||
//this is done by checking the sign of the dot product of the
|
||||
//vector orthogonal vector from above and the vector from the
|
||||
//origin (first vertex of edge) to the point
|
||||
|
|
|
|||
|
|
@ -1313,7 +1313,7 @@ define_t *PC_DefineFromString(char *string)
|
|||
#endif //DEFINEHASHING
|
||||
//
|
||||
FreeScript(script);
|
||||
//if the define was created succesfully
|
||||
//if the define was created successfully
|
||||
if (res > 0) return def;
|
||||
//free the define is created
|
||||
if (src.defines) PC_FreeDefine(def);
|
||||
|
|
@ -2909,7 +2909,7 @@ void PC_UnreadToken(source_t *source, token_t *token)
|
|||
void PC_SetIncludePath(source_t *source, char *path)
|
||||
{
|
||||
strncpy(source->includepath, path, MAX_PATH);
|
||||
//add trailing path seperator
|
||||
//add trailing path separator
|
||||
if (source->includepath[strlen(source->includepath)-1] != '\\' &&
|
||||
source->includepath[strlen(source->includepath)-1] != '/')
|
||||
{
|
||||
|
|
|
|||
|
|
@ -171,7 +171,7 @@ char *PunctuationFromNum(script_t *script, int num)
|
|||
{
|
||||
if (script->punctuations[i].n == num) return script->punctuations[i].p;
|
||||
} //end for
|
||||
return "unkown punctuation";
|
||||
return "unknown punctuation";
|
||||
} //end of the function PunctuationFromNum
|
||||
//===========================================================================
|
||||
//
|
||||
|
|
@ -357,7 +357,7 @@ int PS_ReadEscapeCharacter(script_t *script, char *ch)
|
|||
script->script_p++;
|
||||
//store the escape character
|
||||
*ch = c;
|
||||
//succesfully read escape character
|
||||
//successfully read escape character
|
||||
return 1;
|
||||
} //end of the function PS_ReadEscapeCharacter
|
||||
//============================================================================
|
||||
|
|
@ -367,7 +367,7 @@ int PS_ReadEscapeCharacter(script_t *script, char *ch)
|
|||
//
|
||||
// Parameter: script : script to read from
|
||||
// token : buffer to store the string
|
||||
// Returns: true when a string was read succesfully
|
||||
// Returns: true when a string was read successfully
|
||||
// Changes Globals: -
|
||||
//============================================================================
|
||||
int PS_ReadString(script_t *script, token_t *token, int quote)
|
||||
|
|
@ -411,7 +411,7 @@ int PS_ReadString(script_t *script, token_t *token, int quote)
|
|||
//
|
||||
tmpscript_p = script->script_p;
|
||||
tmpline = script->line;
|
||||
//read unusefull stuff between possible two following strings
|
||||
//read unuseful stuff between possible two following strings
|
||||
if (!PS_ReadWhiteSpace(script))
|
||||
{
|
||||
script->script_p = tmpscript_p;
|
||||
|
|
@ -774,7 +774,7 @@ int PS_ReadPrimitive(script_t *script, token_t *token)
|
|||
token->string[len] = 0;
|
||||
//copy the token into the script structure
|
||||
Com_Memcpy(&script->token, token, sizeof(token_t));
|
||||
//primitive reading successfull
|
||||
//primitive reading successful
|
||||
return 1;
|
||||
} //end of the function PS_ReadPrimitive
|
||||
//============================================================================
|
||||
|
|
@ -801,7 +801,7 @@ int PS_ReadToken(script_t *script, token_t *token)
|
|||
//start of the white space
|
||||
script->whitespace_p = script->script_p;
|
||||
token->whitespace_p = script->script_p;
|
||||
//read unusefull stuff
|
||||
//read unuseful stuff
|
||||
if (!PS_ReadWhiteSpace(script)) return 0;
|
||||
//end of the white space
|
||||
script->endwhitespace_p = script->script_p;
|
||||
|
|
@ -848,7 +848,7 @@ int PS_ReadToken(script_t *script, token_t *token)
|
|||
} //end if
|
||||
//copy the token into the script structure
|
||||
Com_Memcpy(&script->token, token, sizeof(token_t));
|
||||
//succesfully read a token
|
||||
//successfully read a token
|
||||
return 1;
|
||||
} //end of the function PS_ReadToken
|
||||
//============================================================================
|
||||
|
|
|
|||
|
|
@ -205,7 +205,7 @@ Several map bugs can cause these 'solid' places in the AAS file.
|
|||
snapping in the q3map tool those tiny brush faces can be snapped out
|
||||
of existence. Such faces will not show up in Quake3 and you'll see
|
||||
tiny peek holes or slits where you can view through the geometry.
|
||||
Allign vertexes of and edges of adjacent brushes to remove and avoid
|
||||
Align vertexes of and edges of adjacent brushes to remove and avoid
|
||||
such tiny faces. Placing a clip brush in front of the face that is
|
||||
snapped out of existence will also remove the 'solid' area but ofcourse
|
||||
it's much better to remove the peek holes and slits.
|
||||
|
|
|
|||
|
|
@ -116,9 +116,9 @@ int AAS_TryMergeFaceAreas(tmp_face_t *seperatingface)
|
|||
//debug: check if the area belongs to the area
|
||||
if (face1->frontarea != tmparea1 &&
|
||||
face1->backarea != tmparea1) Error("face does not belong to area1");
|
||||
//just continue if the face is seperating the two areas
|
||||
//just continue if the face is separating the two areas
|
||||
//NOTE: a result of this is that ground and gap areas can
|
||||
// be merged if the seperating face is the gap
|
||||
// be merged if the separating face is the gap
|
||||
if ((face1->frontarea == tmparea1 &&
|
||||
face1->backarea == tmparea2) ||
|
||||
(face1->frontarea == tmparea2 &&
|
||||
|
|
@ -133,9 +133,9 @@ int AAS_TryMergeFaceAreas(tmp_face_t *seperatingface)
|
|||
//debug: check if the area belongs to the area
|
||||
if (face2->frontarea != tmparea2 &&
|
||||
face2->backarea != tmparea2) Error("face does not belong to area2");
|
||||
//just continue if the face is seperating the two areas
|
||||
//just continue if the face is separating the two areas
|
||||
//NOTE: a result of this is that ground and gap areas can
|
||||
// be merged if the seperating face is the gap
|
||||
// be merged if the separating face is the gap
|
||||
if ((face2->frontarea == tmparea1 &&
|
||||
face2->backarea == tmparea2) ||
|
||||
(face2->frontarea == tmparea2 &&
|
||||
|
|
@ -147,8 +147,8 @@ int AAS_TryMergeFaceAreas(tmp_face_t *seperatingface)
|
|||
if (NonConvex(face1, face2, side1, side2)) return false;
|
||||
} //end for
|
||||
} //end for
|
||||
//if one area has gap faces (that aren't seperating the two areas)
|
||||
//and the other has ground faces (that aren't seperating the two areas),
|
||||
//if one area has gap faces (that aren't separating the two areas)
|
||||
//and the other has ground faces (that aren't separating the two areas),
|
||||
//the areas can't be merged
|
||||
if (((area1faceflags & FACE_GROUND) && (area2faceflags & FACE_GAP)) ||
|
||||
((area2faceflags & FACE_GROUND) && (area1faceflags & FACE_GAP)))
|
||||
|
|
@ -169,13 +169,13 @@ int AAS_TryMergeFaceAreas(tmp_face_t *seperatingface)
|
|||
newarea->modelnum = tmparea1->modelnum;
|
||||
newarea->tmpfaces = NULL;
|
||||
|
||||
//add all the faces (except the seperating ones) from the first area
|
||||
//add all the faces (except the separating ones) from the first area
|
||||
//to the new area
|
||||
for (face1 = tmparea1->tmpfaces; face1; face1 = nextface1)
|
||||
{
|
||||
side1 = (face1->frontarea != tmparea1);
|
||||
nextface1 = face1->next[side1];
|
||||
//don't add seperating faces
|
||||
//don't add separating faces
|
||||
if ((face1->frontarea == tmparea1 &&
|
||||
face1->backarea == tmparea2) ||
|
||||
(face1->frontarea == tmparea2 &&
|
||||
|
|
@ -187,13 +187,13 @@ int AAS_TryMergeFaceAreas(tmp_face_t *seperatingface)
|
|||
AAS_RemoveFaceFromArea(face1, tmparea1);
|
||||
AAS_AddFaceSideToArea(face1, side1, newarea);
|
||||
} //end for
|
||||
//add all the faces (except the seperating ones) from the second area
|
||||
//add all the faces (except the separating ones) from the second area
|
||||
//to the new area
|
||||
for (face2 = tmparea2->tmpfaces; face2; face2 = nextface2)
|
||||
{
|
||||
side2 = (face2->frontarea != tmparea2);
|
||||
nextface2 = face2->next[side2];
|
||||
//don't add seperating faces
|
||||
//don't add separating faces
|
||||
if ((face2->frontarea == tmparea1 &&
|
||||
face2->backarea == tmparea2) ||
|
||||
(face2->frontarea == tmparea2 &&
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ typedef struct tmp_area_s
|
|||
tmp_areasettings_t *settings; //area settings
|
||||
struct tmp_area_s *mergedarea; //points to the new area after merging
|
||||
//when mergedarea != 0 the area has only the
|
||||
//seperating face of the merged areas
|
||||
//separating face of the merged areas
|
||||
int aasareanum; //number of the aas area created for this tmp area
|
||||
//links in the list with areas
|
||||
struct tmp_area_s *l_prev, *l_next;
|
||||
|
|
|
|||
|
|
@ -149,7 +149,7 @@ void AAS_MergeAreaFaces(void)
|
|||
for (face2 = face1->next[side1]; face2; face2 = face2->next[side2])
|
||||
{
|
||||
side2 = face2->frontarea != tmparea;
|
||||
//if succesfully merged
|
||||
//if successfully merged
|
||||
if (AAS_TryMergeFaces(face1, face2))
|
||||
{
|
||||
//start over again after merging two faces
|
||||
|
|
|
|||
|
|
@ -372,7 +372,7 @@ int AAS_FindBestAreaSplitPlane(tmp_area_t *tmparea, vec3_t normal, float *dist)
|
|||
//only split between gaps and ground
|
||||
if (!(((face1->faceflags & FACE_GROUND) && AAS_GapFace(face2, side2)) ||
|
||||
((face2->faceflags & FACE_GROUND) && AAS_GapFace(face1, side1)))) continue;
|
||||
//find a plane seperating the windings of the faces
|
||||
//find a plane separating the windings of the faces
|
||||
if (!FindPlaneSeperatingWindings(face1->winding, face2->winding, invgravity,
|
||||
tmpnormal, &tmpdist)) continue;
|
||||
#ifdef AW_DEBUG
|
||||
|
|
|
|||
|
|
@ -176,7 +176,7 @@ typedef struct aas_edge_s
|
|||
//edge index, negative if vertexes are reversed
|
||||
typedef int aas_edgeindex_t;
|
||||
|
||||
//a face bounds a convex area, often it will also seperate two convex areas
|
||||
//a face bounds a convex area, often it will also separate two convex areas
|
||||
typedef struct aas_face_s
|
||||
{
|
||||
int planenum; //number of the plane this face is in
|
||||
|
|
|
|||
|
|
@ -808,7 +808,7 @@ int TestBrushToPlanenum (bspbrush_t *brush, int planenum,
|
|||
} //end of the function TestBrushToPlanenum
|
||||
//===========================================================================
|
||||
// Returns true if the winding would be crunched out of
|
||||
// existance by the vertex snapping.
|
||||
// existence by the vertex snapping.
|
||||
//
|
||||
// Parameter: -
|
||||
// Returns: -
|
||||
|
|
@ -1000,9 +1000,9 @@ side_t *SelectSplitSide (bspbrush_t *brushes, node_t *node)
|
|||
if (!side->winding)
|
||||
continue; // nothing visible, so it can't split
|
||||
if (side->texinfo == TEXINFO_NODE)
|
||||
continue; // allready a node splitter
|
||||
continue; // already a node splitter
|
||||
if (side->flags & SFL_TESTED)
|
||||
continue; // we allready have metrics for this plane
|
||||
continue; // we already have metrics for this plane
|
||||
// if (side->surf & SURF_SKIP)
|
||||
// continue; // skip surfaces are never chosen
|
||||
|
||||
|
|
@ -1058,7 +1058,7 @@ side_t *SelectSplitSide (bspbrush_t *brushes, node_t *node)
|
|||
value = -9999999;
|
||||
|
||||
// save off the side test so we don't need
|
||||
// to recalculate it when we actually seperate
|
||||
// to recalculate it when we actually separate
|
||||
// the brushes
|
||||
if (value > bestvalue)
|
||||
{
|
||||
|
|
@ -1370,7 +1370,7 @@ void SplitBrushList (bspbrush_t *brushes,
|
|||
|
||||
newbrush = CopyBrush (brush);
|
||||
|
||||
// if the planenum is actualy a part of the brush
|
||||
// if the planenum is actually a part of the brush
|
||||
// find the plane and flag it as used so it won't be tried
|
||||
// as a splitter again
|
||||
if (sides & PSIDE_FACING)
|
||||
|
|
|
|||
|
|
@ -412,7 +412,7 @@ bspbrush_t *IntersectBrush (bspbrush_t *a, bspbrush_t *b)
|
|||
return in;
|
||||
} //end of the function IntersectBrush
|
||||
//===========================================================================
|
||||
// Returns true if the two brushes definately do not intersect.
|
||||
// Returns true if the two brushes definitely do not intersect.
|
||||
// There will be false negatives for some non-axial combinations.
|
||||
//
|
||||
// Parameter: -
|
||||
|
|
|
|||
|
|
@ -852,7 +852,7 @@ winding_t *MergeWindings(winding_t *w1, winding_t *w2, vec3_t planenormal)
|
|||
if (DotProduct(v, sepnormal) - dist < -0.1) sides[j] = SIDE_BACK;
|
||||
else sides[j] = SIDE_FRONT;
|
||||
} //end for
|
||||
//remove all unnecesary points
|
||||
//remove all unnecessary points
|
||||
for (j = 0; j < numpoints;)
|
||||
{
|
||||
if (sides[j] == SIDE_BACK
|
||||
|
|
@ -1179,7 +1179,7 @@ int FindPlaneSeperatingWindings(winding_t *w1, winding_t *w2, vec3_t dir,
|
|||
if (diff < -0.0001 || diff > 0.0001) break;
|
||||
} //end for
|
||||
if (n != 3) continue;
|
||||
//check on which side of the seperating plane the points of
|
||||
//check on which side of the separating plane the points of
|
||||
//the first winding are
|
||||
sides1[0] = sides1[1] = sides1[2] = 0;
|
||||
for (n = 0; n < w1->numpoints; n++)
|
||||
|
|
@ -1189,7 +1189,7 @@ int FindPlaneSeperatingWindings(winding_t *w1, winding_t *w2, vec3_t dir,
|
|||
else if (dot < -0.1) sides1[1]++;
|
||||
else sides1[2]++;
|
||||
} //end for
|
||||
//check on which side of the seperating plane the points of
|
||||
//check on which side of the separating plane the points of
|
||||
//the second winding are
|
||||
sides2[0] = sides2[1] = sides2[2] = 0;
|
||||
for (n = 0; n < w2->numpoints; n++)
|
||||
|
|
@ -1215,10 +1215,10 @@ int FindPlaneSeperatingWindings(winding_t *w1, winding_t *w2, vec3_t dir,
|
|||
//
|
||||
if ((!sides1[0] && !sides1[1]) || (!sides2[0] && !sides2[1]))
|
||||
{
|
||||
//don't use one of the winding planes as the seperating plane
|
||||
//don't use one of the winding planes as the separating plane
|
||||
continue;
|
||||
} //end if
|
||||
//the windings must be at different sides of the seperating plane
|
||||
//the windings must be at different sides of the separating plane
|
||||
if ((!sides1[0] && !sides2[1]) || (!sides1[1] && !sides2[0]))
|
||||
{
|
||||
VectorCopy(normal1, normal);
|
||||
|
|
@ -1308,29 +1308,29 @@ winding_t *AAS_MergeWindings(winding_t *w1, winding_t *w2, vec3_t windingnormal)
|
|||
{
|
||||
if (n == 0) winding = w1;
|
||||
else winding = w2;
|
||||
//get the points of the winding which are on the seperating plane
|
||||
//get the points of the winding which are on the separating plane
|
||||
for (i = 0; i < winding->numpoints; i++)
|
||||
{
|
||||
dot = DotProduct(winding->p[i], normal) - dist;
|
||||
if (dot > -ON_EPSILON && dot < ON_EPSILON)
|
||||
{
|
||||
//don't allow more than 64 points on the seperating plane
|
||||
if (numpoints[n] >= 64) Error("AAS_MergeWindings: more than 64 points on seperating plane\n");
|
||||
//don't allow more than 64 points on the separating plane
|
||||
if (numpoints[n] >= 64) Error("AAS_MergeWindings: more than 64 points on separating plane\n");
|
||||
points[n][numpoints[n]++] = i;
|
||||
} //end if
|
||||
} //end for
|
||||
//there must be at least two points of each winding on the seperating plane
|
||||
//there must be at least two points of each winding on the separating plane
|
||||
if (numpoints[n] < 2) return NULL;
|
||||
} //end for
|
||||
|
||||
//if the first point of winding1 (which is on the seperating plane) is unequal
|
||||
//to the last point of winding2 (which is on the seperating plane)
|
||||
//if the first point of winding1 (which is on the separating plane) is unequal
|
||||
//to the last point of winding2 (which is on the separating plane)
|
||||
if (!EqualVertexes(w1->p[points[0][0]], w2->p[points[1][numpoints[1]-1]]))
|
||||
{
|
||||
return NULL;
|
||||
} //end if
|
||||
//if the last point of winding1 (which is on the seperating plane) is unequal
|
||||
//to the first point of winding2 (which is on the seperating plane)
|
||||
//if the last point of winding1 (which is on the separating plane) is unequal
|
||||
//to the first point of winding2 (which is on the separating plane)
|
||||
if (!EqualVertexes(w1->p[points[0][numpoints[0]-1]], w2->p[points[1][0]]))
|
||||
{
|
||||
return NULL;
|
||||
|
|
@ -1339,7 +1339,7 @@ winding_t *AAS_MergeWindings(winding_t *w1, winding_t *w2, vec3_t windingnormal)
|
|||
// check slope of connected lines
|
||||
// if the slopes are colinear, the point can be removed
|
||||
//
|
||||
//first point of winding1 which is on the seperating plane
|
||||
//first point of winding1 which is on the separating plane
|
||||
p1 = points[0][0];
|
||||
//point before p1
|
||||
p2 = (p1 + w1->numpoints - 1) % w1->numpoints;
|
||||
|
|
@ -1347,7 +1347,7 @@ winding_t *AAS_MergeWindings(winding_t *w1, winding_t *w2, vec3_t windingnormal)
|
|||
CrossProduct(windingnormal, delta, normal);
|
||||
VectorNormalize(normal, normal);
|
||||
|
||||
//last point of winding2 which is on the seperating plane
|
||||
//last point of winding2 which is on the separating plane
|
||||
p1 = points[1][numpoints[1]-1];
|
||||
//point after p1
|
||||
p2 = (p1 + 1) % w2->numpoints;
|
||||
|
|
@ -1356,7 +1356,7 @@ winding_t *AAS_MergeWindings(winding_t *w1, winding_t *w2, vec3_t windingnormal)
|
|||
if (dot > CONTINUOUS_EPSILON) return NULL; //merging would create a non-convex polygon
|
||||
keep[0] = (qboolean)(dot < -CONTINUOUS_EPSILON);
|
||||
|
||||
//first point of winding2 which is on the seperating plane
|
||||
//first point of winding2 which is on the separating plane
|
||||
p1 = points[1][0];
|
||||
//point before p1
|
||||
p2 = (p1 + w2->numpoints - 1) % w2->numpoints;
|
||||
|
|
@ -1364,7 +1364,7 @@ winding_t *AAS_MergeWindings(winding_t *w1, winding_t *w2, vec3_t windingnormal)
|
|||
CrossProduct(windingnormal, delta, normal);
|
||||
VectorNormalize(normal, normal);
|
||||
|
||||
//last point of winding1 which is on the seperating plane
|
||||
//last point of winding1 which is on the separating plane
|
||||
p1 = points[0][numpoints[0]-1];
|
||||
//point after p1
|
||||
p2 = (p1 + 1) % w1->numpoints;
|
||||
|
|
@ -1386,7 +1386,7 @@ winding_t *AAS_MergeWindings(winding_t *w1, winding_t *w2, vec3_t windingnormal)
|
|||
if (n == 0) winding = w1;
|
||||
else winding = w2;
|
||||
//copy the points of the winding starting with the last point on the
|
||||
//seperating plane and ending before the first point on the seperating plane
|
||||
//separating plane and ending before the first point on the separating plane
|
||||
for (i = points[n][numpoints[n]-1]; i != points[n][0]; i = (i+1)%winding->numpoints)
|
||||
{
|
||||
if (k >= newnumpoints)
|
||||
|
|
|
|||
|
|
@ -105,9 +105,9 @@ winding_t *AddWindingPoint(winding_t *w, vec3_t point, int spot);
|
|||
//when the point is on one of the edged the number of the first
|
||||
//point of the edge is stored in 'spot'
|
||||
int PointOnWinding(winding_t *w, vec3_t normal, float dist, vec3_t point, int *spot);
|
||||
//find a plane seperating the two windings
|
||||
//find a plane separating the two windings
|
||||
//true is returned when the windings area adjacent
|
||||
//the seperating plane normal and distance area stored in 'normal' and 'dist'
|
||||
//the separating plane normal and distance area stored in 'normal' and 'dist'
|
||||
//this plane will contain both the piece of common edge of the two windings
|
||||
//and the vector 'dir'
|
||||
int FindPlaneSeperatingWindings(winding_t *w1, winding_t *w2, vec3_t dir,
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ typedef struct foundfile_s
|
|||
|
||||
//set the correct path seperators
|
||||
void ConvertPath(char *path);
|
||||
//append a path seperator to the given path not exceeding the length
|
||||
//append a path separator to the given path not exceeding the length
|
||||
void AppendPathSeperator(char *path, int length);
|
||||
//find a file in a pak file
|
||||
qboolean FindFileInPak(char *pakfile, char *filename, foundfile_t *file);
|
||||
|
|
|
|||
|
|
@ -362,7 +362,7 @@ void AddBrushBevels (mapbrush_t *b)
|
|||
{
|
||||
for (dir=-1 ; dir <= 1 ; dir+=2, order++)
|
||||
{
|
||||
// see if the plane is allready present
|
||||
// see if the plane is already present
|
||||
for (i=0, s=b->original_sides ; i<b->numsides ; i++,s++)
|
||||
{
|
||||
if (mapplanes[s->planenum].normal[axis] == dir)
|
||||
|
|
@ -455,7 +455,7 @@ void AddBrushBevels (mapbrush_t *b)
|
|||
// behind this plane, it is a proper edge bevel
|
||||
for (k=0 ; k<b->numsides ; k++)
|
||||
{
|
||||
// if this plane has allready been used, skip it
|
||||
// if this plane has already been used, skip it
|
||||
if (PlaneEqual (&mapplanes[b->original_sides[k].planenum]
|
||||
, normal, dist) )
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -1026,7 +1026,7 @@ void HL_CreateMapBrushes(entity_t *mapent, int modelnum)
|
|||
|
||||
//create brushes from the model BSP tree
|
||||
brushlist = HL_CreateBrushesFromBSP(modelnum);
|
||||
//texture the brushes and split them when necesary
|
||||
//texture the brushes and split them when necessary
|
||||
brushlist = HL_TextureBrushes(brushlist, modelnum);
|
||||
//fix the contents textures of all brushes
|
||||
HL_FixContentsTextures(brushlist);
|
||||
|
|
|
|||
|
|
@ -1084,7 +1084,7 @@ void Q1_CreateMapBrushes(entity_t *mapent, int modelnum)
|
|||
|
||||
//create brushes from the model BSP tree
|
||||
brushlist = Q1_CreateBrushesFromBSP(modelnum);
|
||||
//texture the brushes and split them when necesary
|
||||
//texture the brushes and split them when necessary
|
||||
brushlist = Q1_TextureBrushes(brushlist, modelnum);
|
||||
//fix the contents textures of all brushes
|
||||
Q1_FixContentsTextures(brushlist);
|
||||
|
|
|
|||
|
|
@ -192,7 +192,7 @@ int c_tinyportals;
|
|||
void AddPortalToNodes (portal_t *p, node_t *front, node_t *back)
|
||||
{
|
||||
if (p->nodes[0] || p->nodes[1])
|
||||
Error ("AddPortalToNode: allready included");
|
||||
Error ("AddPortalToNode: already included");
|
||||
|
||||
p->nodes[0] = front;
|
||||
p->next[0] = front->portals;
|
||||
|
|
@ -999,7 +999,7 @@ void FloodAreas_r (node_t *node)
|
|||
b = node->brushlist;
|
||||
e = &entities[b->original->entitynum];
|
||||
|
||||
// if the current area has allready touched this
|
||||
// if the current area has already touched this
|
||||
// portal, we are done
|
||||
if (e->portalareas[0] == c_areas || e->portalareas[1] == c_areas)
|
||||
return;
|
||||
|
|
@ -1019,7 +1019,7 @@ void FloodAreas_r (node_t *node)
|
|||
} //end if
|
||||
|
||||
if (node->area)
|
||||
return; // allready got it
|
||||
return; // already got it
|
||||
node->area = c_areas;
|
||||
|
||||
for (p=node->portals ; p ; p = p->next[s])
|
||||
|
|
@ -1053,7 +1053,7 @@ void FindAreas_r (node_t *node)
|
|||
}
|
||||
|
||||
if (node->area)
|
||||
return; // allready got it
|
||||
return; // already got it
|
||||
|
||||
if (node->contents & CONTENTS_SOLID)
|
||||
return;
|
||||
|
|
@ -1092,7 +1092,7 @@ void SetAreaPortalAreas_r (node_t *node)
|
|||
if (node->contents == CONTENTS_AREAPORTAL)
|
||||
{
|
||||
if (node->area)
|
||||
return; // allready set
|
||||
return; // already set
|
||||
|
||||
b = node->brushlist;
|
||||
e = &entities[b->original->entitynum];
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ void WritePortalFile_r (node_t *node)
|
|||
// sometimes planes get turned around when they are very near
|
||||
// the changeover point between different axis. interpret the
|
||||
// plane the same way vis will, and flip the side orders if needed
|
||||
// FIXME: is this still relevent?
|
||||
// FIXME: is this still relevant?
|
||||
WindingPlane (w, normal, &dist);
|
||||
if ( DotProduct (p->plane.normal, normal) < 0.99 )
|
||||
{ // backwards...
|
||||
|
|
|
|||
|
|
@ -325,7 +325,7 @@ typedef struct
|
|||
} dplane_t;
|
||||
|
||||
|
||||
// contents flags are seperate bits
|
||||
// contents flags are separate bits
|
||||
// a given brush can contribute multiple content bits
|
||||
// multiple brushes can be in a single leaf
|
||||
|
||||
|
|
|
|||
|
|
@ -206,7 +206,7 @@ typedef struct {
|
|||
#define Q3_BSP_VERSION 46
|
||||
|
||||
// quick fix for creating aas files for ql bsp's.
|
||||
// (later this will probably need to be seperated, if we plan to add further support for ql)
|
||||
// (later this will probably need to be separated, if we plan to add further support for ql)
|
||||
#define QL_BSP_IDENT (('P'<<24)+('S'<<16)+('B'<<8)+'I')
|
||||
// little-endian "IBSP"
|
||||
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
#define CLIP_EPSILON 0.1
|
||||
#define MAX_MAP_BOUNDS 65535
|
||||
#define BOGUS_RANGE (MAX_MAP_BOUNDS+128) //somewhere outside the map
|
||||
#define TEXINFO_NODE -1 //side is allready on a node
|
||||
#define TEXINFO_NODE -1 //side is already on a node
|
||||
#define PLANENUM_LEAF -1 //used for leaf nodes
|
||||
#define MAXEDGES 20 //maximum number of face edges
|
||||
#define MAX_NODE_BRUSHES 8 //maximum brushes in a node
|
||||
|
|
|
|||
|
|
@ -325,7 +325,7 @@ typedef struct
|
|||
} dplane_t;
|
||||
|
||||
|
||||
// contents flags are seperate bits
|
||||
// contents flags are separate bits
|
||||
// a given brush can contribute multiple content bits
|
||||
// multiple brushes can be in a single leaf
|
||||
|
||||
|
|
|
|||
|
|
@ -145,7 +145,7 @@ typedef struct
|
|||
} sin_dplane_t;
|
||||
|
||||
|
||||
// contents flags are seperate bits
|
||||
// contents flags are separate bits
|
||||
// a given brush can contribute multiple content bits
|
||||
// multiple brushes can be in a single leaf
|
||||
|
||||
|
|
|
|||
|
|
@ -217,7 +217,7 @@ void Tree_Print_r (node_t *node, int depth)
|
|||
Tree_Print_r (node->children[1], depth+1);
|
||||
} //end of the function Tree_Print_r
|
||||
//===========================================================================
|
||||
// NODES THAT DON'T SEPERATE DIFFERENT CONTENTS CAN BE PRUNED
|
||||
// NODES THAT DON'T SEPARATE DIFFERENT CONTENTS CAN BE PRUNED
|
||||
//
|
||||
// Parameter: -
|
||||
// Returns: -
|
||||
|
|
@ -242,7 +242,7 @@ void Tree_PruneNodes_r (node_t *node)
|
|||
&& (node->children[1]->contents & CONTENTS_SOLID))
|
||||
{
|
||||
if (node->faces)
|
||||
Error ("node->faces seperating CONTENTS_SOLID");
|
||||
Error ("node->faces separating CONTENTS_SOLID");
|
||||
if (node->children[0]->faces || node->children[1]->faces)
|
||||
Error ("!node->faces with children");
|
||||
// FIXME: free stuff
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ int planeused[MAX_MAP_PLANES];
|
|||
============
|
||||
EmitPlanes
|
||||
|
||||
There is no oportunity to discard planes, because all of the original
|
||||
There is no opportunity to discard planes, because all of the original
|
||||
brushes will be saved in the map.
|
||||
============
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -295,7 +295,7 @@ static void CM_SubdivideGridColumns( cGrid_t *grid ) {
|
|||
// grid->points[i+2][x] is an interpolating control point
|
||||
|
||||
//
|
||||
// first see if we can collapse the aproximating collumn away
|
||||
// first see if we can collapse the aproximating column away
|
||||
//
|
||||
for ( j = 0 ; j < grid->height ; j++ ) {
|
||||
if ( CM_NeedsSubdivision( grid->points[i][j], grid->points[i+1][j], grid->points[i+2][j] ) ) {
|
||||
|
|
@ -851,7 +851,7 @@ void CM_AddFacetBevels( facet_t *facet ) {
|
|||
if (CM_PlaneEqual(&planes[facet->surfacePlane], plane, &flipped)) {
|
||||
continue;
|
||||
}
|
||||
// see if the plane is allready present
|
||||
// see if the plane is already present
|
||||
for ( i = 0 ; i < facet->numBorders ; i++ ) {
|
||||
if (CM_PlaneEqual(&planes[facet->borderPlanes[i]], plane, &flipped))
|
||||
break;
|
||||
|
|
@ -912,7 +912,7 @@ void CM_AddFacetBevels( facet_t *facet ) {
|
|||
if (CM_PlaneEqual(&planes[facet->surfacePlane], plane, &flipped)) {
|
||||
continue;
|
||||
}
|
||||
// see if the plane is allready present
|
||||
// see if the plane is already present
|
||||
for ( i = 0 ; i < facet->numBorders ; i++ ) {
|
||||
if (CM_PlaneEqual(&planes[facet->borderPlanes[i]], plane, &flipped)) {
|
||||
break;
|
||||
|
|
@ -1078,7 +1078,7 @@ static void CM_PatchCollideFromGrid( cGrid_t *grid, patchCollide_t *pf ) {
|
|||
numFacets++;
|
||||
}
|
||||
} else {
|
||||
// two seperate triangles
|
||||
// two separate triangles
|
||||
facet->surfacePlane = gridPlanes[i][j][0];
|
||||
facet->numBorders = 3;
|
||||
facet->borderPlanes[0] = borders[EN_TOP];
|
||||
|
|
@ -1187,7 +1187,7 @@ struct patchCollide_s *CM_GeneratePatchCollide( int width, int height, vec3_t *p
|
|||
CM_RemoveDegenerateColumns( &grid );
|
||||
|
||||
// we now have a grid of points exactly on the curve
|
||||
// the aproximate surface defined by these points will be
|
||||
// the approximate surface defined by these points will be
|
||||
// collided against
|
||||
pf = Hunk_Alloc( sizeof( *pf ), h_high );
|
||||
ClearBounds( pf->bounds[0], pf->bounds[1] );
|
||||
|
|
@ -1342,7 +1342,7 @@ int CM_CheckFacetPlane(float *plane, vec3_t start, vec3_t end, float *enterFrac,
|
|||
return false;
|
||||
}
|
||||
|
||||
// if it doesn't cross the plane, the plane isn't relevent
|
||||
// if it doesn't cross the plane, the plane isn't relevant
|
||||
if (d1 <= 0 && d2 <= 0 ) {
|
||||
return true;
|
||||
}
|
||||
|
|
@ -1407,7 +1407,7 @@ void CM_TraceThroughPatchCollide( traceWork_t *tw, const struct patchCollide_s *
|
|||
VectorCopy(planes->plane, plane);
|
||||
plane[3] = planes->plane[3];
|
||||
if ( tw->sphere.use ) {
|
||||
// adjust the plane distance apropriately for radius
|
||||
// adjust the plane distance appropriately for radius
|
||||
plane[3] += tw->sphere.radius;
|
||||
|
||||
// find the closest point on the capsule to the plane
|
||||
|
|
@ -1446,7 +1446,7 @@ void CM_TraceThroughPatchCollide( traceWork_t *tw, const struct patchCollide_s *
|
|||
plane[3] = planes->plane[3];
|
||||
}
|
||||
if ( tw->sphere.use ) {
|
||||
// adjust the plane distance apropriately for radius
|
||||
// adjust the plane distance appropriately for radius
|
||||
plane[3] += tw->sphere.radius;
|
||||
|
||||
// find the closest point on the capsule to the plane
|
||||
|
|
@ -1535,7 +1535,7 @@ qboolean CM_PositionTestInPatchCollide( traceWork_t *tw, const struct patchColli
|
|||
VectorCopy(planes->plane, plane);
|
||||
plane[3] = planes->plane[3];
|
||||
if ( tw->sphere.use ) {
|
||||
// adjust the plane distance apropriately for radius
|
||||
// adjust the plane distance appropriately for radius
|
||||
plane[3] += tw->sphere.radius;
|
||||
|
||||
// find the closest point on the capsule to the plane
|
||||
|
|
@ -1568,7 +1568,7 @@ qboolean CM_PositionTestInPatchCollide( traceWork_t *tw, const struct patchColli
|
|||
plane[3] = planes->plane[3];
|
||||
}
|
||||
if ( tw->sphere.use ) {
|
||||
// adjust the plane distance apropriately for radius
|
||||
// adjust the plane distance appropriately for radius
|
||||
plane[3] += tw->sphere.radius;
|
||||
|
||||
// find the closest point on the capsule to the plane
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@ void CM_TestBoxInBrush( traceWork_t *tw, cbrush_t *brush ) {
|
|||
side = brush->sides + i;
|
||||
plane = side->plane;
|
||||
|
||||
// adjust the plane distance apropriately for radius
|
||||
// adjust the plane distance appropriately for radius
|
||||
dist = plane->dist + tw->sphere.radius;
|
||||
// find the closest point on the capsule to the plane
|
||||
t = DotProduct( plane->normal, tw->sphere.offset );
|
||||
|
|
@ -214,7 +214,7 @@ void CM_TestBoxInBrush( traceWork_t *tw, cbrush_t *brush ) {
|
|||
side = brush->sides + i;
|
||||
plane = side->plane;
|
||||
|
||||
// adjust the plane distance apropriately for mins/maxs
|
||||
// adjust the plane distance appropriately for mins/maxs
|
||||
dist = plane->dist - DotProduct( tw->offsets[ plane->signbits ], plane->normal );
|
||||
|
||||
d1 = DotProduct( tw->start, plane->normal ) - dist;
|
||||
|
|
@ -517,7 +517,7 @@ void CM_TraceThroughBrush( traceWork_t *tw, cbrush_t *brush ) {
|
|||
side = brush->sides + i;
|
||||
plane = side->plane;
|
||||
|
||||
// adjust the plane distance apropriately for radius
|
||||
// adjust the plane distance appropriately for radius
|
||||
dist = plane->dist + tw->sphere.radius;
|
||||
|
||||
// find the closest point on the capsule to the plane
|
||||
|
|
@ -548,7 +548,7 @@ void CM_TraceThroughBrush( traceWork_t *tw, cbrush_t *brush ) {
|
|||
return;
|
||||
}
|
||||
|
||||
// if it doesn't cross the plane, the plane isn't relevent
|
||||
// if it doesn't cross the plane, the plane isn't relevant
|
||||
if (d1 <= 0 && d2 <= 0 ) {
|
||||
continue;
|
||||
}
|
||||
|
|
@ -584,7 +584,7 @@ void CM_TraceThroughBrush( traceWork_t *tw, cbrush_t *brush ) {
|
|||
side = brush->sides + i;
|
||||
plane = side->plane;
|
||||
|
||||
// adjust the plane distance apropriately for mins/maxs
|
||||
// adjust the plane distance appropriately for mins/maxs
|
||||
dist = plane->dist - DotProduct( tw->offsets[ plane->signbits ], plane->normal );
|
||||
|
||||
d1 = DotProduct( tw->start, plane->normal ) - dist;
|
||||
|
|
@ -602,7 +602,7 @@ void CM_TraceThroughBrush( traceWork_t *tw, cbrush_t *brush ) {
|
|||
return;
|
||||
}
|
||||
|
||||
// if it doesn't cross the plane, the plane isn't relevent
|
||||
// if it doesn't cross the plane, the plane isn't relevant
|
||||
if (d1 <= 0 && d2 <= 0 ) {
|
||||
continue;
|
||||
}
|
||||
|
|
@ -1046,13 +1046,13 @@ void CM_TraceThroughTree( traceWork_t *tw, int num, float p1f, float p2f, vec3_t
|
|||
}
|
||||
|
||||
//
|
||||
// find the point distances to the seperating plane
|
||||
// find the point distances to the separating plane
|
||||
// and the offset for the size of the box
|
||||
//
|
||||
node = cm.nodes + num;
|
||||
plane = node->plane;
|
||||
|
||||
// adjust the plane distance apropriately for mins/maxs
|
||||
// adjust the plane distance appropriately for mins/maxs
|
||||
if ( plane->type < 3 ) {
|
||||
t1 = p1[plane->type] - plane->dist;
|
||||
t2 = p2[plane->type] - plane->dist;
|
||||
|
|
@ -1208,7 +1208,7 @@ void CM_Trace( trace_t *results, const vec3_t start, const vec3_t end, vec3_t mi
|
|||
|
||||
tw.maxOffset = tw.size[1][0] + tw.size[1][1] + tw.size[1][2];
|
||||
|
||||
// tw.offsets[signbits] = vector to apropriate corner from origin
|
||||
// tw.offsets[signbits] = vector to appropriate corner from origin
|
||||
tw.offsets[0][0] = tw.size[0][0];
|
||||
tw.offsets[0][1] = tw.size[0][1];
|
||||
tw.offsets[0][2] = tw.size[0][2];
|
||||
|
|
|
|||
|
|
@ -170,7 +170,7 @@ typedef int clipHandle_t;
|
|||
|
||||
#define MAX_SAY_TEXT 150
|
||||
|
||||
// paramters for command buffer stuffing
|
||||
// parameters for command buffer stuffing
|
||||
typedef enum {
|
||||
EXEC_NOW, // don't return until completed, a VM should NEVER use this,
|
||||
// because some commands might cause the VM to be unloaded...
|
||||
|
|
@ -1041,7 +1041,7 @@ typedef struct playerState_s {
|
|||
#define BUTTON_TALK 2 // displays talk balloon and disables actions
|
||||
#define BUTTON_USE_HOLDABLE 4
|
||||
#define BUTTON_GESTURE 8
|
||||
#define BUTTON_WALKING 16 // walking can't just be infered from MOVE_RUN
|
||||
#define BUTTON_WALKING 16 // walking can't just be inferred from MOVE_RUN
|
||||
// because a key pressed late in the frame will
|
||||
// only generate a small move value for that frame
|
||||
// walking will use different animations and
|
||||
|
|
|
|||
|
|
@ -622,7 +622,7 @@ extern int cvar_modifiedFlags;
|
|||
FILESYSTEM
|
||||
|
||||
No stdio calls should be used by any part of the game, because
|
||||
we need to deal with all sorts of directory and seperator char
|
||||
we need to deal with all sorts of directory and separator char
|
||||
issues.
|
||||
==============================================================
|
||||
*/
|
||||
|
|
@ -700,7 +700,7 @@ void FS_FCloseFile( fileHandle_t f );
|
|||
int FS_ReadFile( const char *qpath, void **buffer );
|
||||
// returns the length of the file
|
||||
// a null buffer will just return the file length without loading
|
||||
// as a quick check for existance. -1 length == not present
|
||||
// as a quick check for existence. -1 length == not present
|
||||
// A 0 byte will always be appended at the end, so string ops are safe.
|
||||
// the buffer should be considered read-only, because it may be cached
|
||||
// for other uses.
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
//
|
||||
// This file must be identical in the quake and utils directories
|
||||
|
||||
// contents flags are seperate bits
|
||||
// contents flags are separate bits
|
||||
// a given brush can contribute multiple content bits
|
||||
|
||||
// these definitions also need to be in q_shared.h!
|
||||
|
|
|
|||
|
|
@ -1079,7 +1079,7 @@ static void zcfree OF((voidp opaque, voidp ptr));
|
|||
/* ===========================================================================
|
||||
Read a byte from a gz_stream; update next_in and avail_in. Return EOF
|
||||
for end of file.
|
||||
IN assertion: the stream s has been sucessfully opened for reading.
|
||||
IN assertion: the stream s has been successfully opened for reading.
|
||||
*/
|
||||
|
||||
/*
|
||||
|
|
@ -1163,8 +1163,8 @@ static int strcmpcasenosensitive_internal (const char* fileName1,const char* fil
|
|||
|
||||
/*
|
||||
Compare two filename (fileName1,fileName2).
|
||||
If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp)
|
||||
If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi
|
||||
If iCaseSenisivity = 1, comparison is case sensitivity (like strcmp)
|
||||
If iCaseSenisivity = 2, comparison is not case sensitivity (like strcmpi
|
||||
or strcasecmp)
|
||||
If iCaseSenisivity = 0, case sensitivity is defaut of your operating system
|
||||
(like 1 on Unix, 2 on Windows)
|
||||
|
|
@ -2448,7 +2448,7 @@ static int inflate_flush OF((
|
|||
end-of-block. Note however that the static length tree defines
|
||||
288 codes just to fill out the Huffman codes. Codes 286 and 287
|
||||
cannot be used though, since there is no length base or extra bits
|
||||
defined for them. Similarily, there are up to 30 distance codes.
|
||||
defined for them. Similarly, there are up to 30 distance codes.
|
||||
However, static trees define 32 codes (all 5 bits) to fill out the
|
||||
Huffman codes, but the last two had better not show up in the data.
|
||||
7. Unzip can check dynamic Huffman blocks for complete code sets.
|
||||
|
|
|
|||
|
|
@ -171,8 +171,8 @@ extern int unzStringFileNameCompare (const char* fileName1, const char* fileName
|
|||
|
||||
/*
|
||||
Compare two filename (fileName1,fileName2).
|
||||
If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp)
|
||||
If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi
|
||||
If iCaseSenisivity = 1, comparison is case sensitivity (like strcmp)
|
||||
If iCaseSenisivity = 2, comparison is not case sensitivity (like strcmpi
|
||||
or strcasecmp)
|
||||
If iCaseSenisivity = 0, case sensitivity is defaut of your operating system
|
||||
(like 1 on Unix, 2 on Windows)
|
||||
|
|
|
|||
|
|
@ -618,7 +618,7 @@ int LoadFile( const char *filename, void **bufferptr ){
|
|||
==============
|
||||
LoadFileBlock
|
||||
-
|
||||
rounds up memory allocation to 4K boundry
|
||||
rounds up memory allocation to 4K boundary
|
||||
-
|
||||
==============
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -267,7 +267,7 @@ void FPrintf( int flag, char *buf ){
|
|||
return;
|
||||
}
|
||||
|
||||
// ouput an XML file of the run
|
||||
// output an XML file of the run
|
||||
// use the DOM interface to build a tree
|
||||
/*
|
||||
<message level='flag'>
|
||||
|
|
|
|||
|
|
@ -402,7 +402,7 @@ typedef struct
|
|||
} dplane_t;
|
||||
|
||||
|
||||
// contents flags are seperate bits
|
||||
// contents flags are separate bits
|
||||
// a given brush can contribute multiple content bits
|
||||
// multiple brushes can be in a single leaf
|
||||
|
||||
|
|
|
|||
|
|
@ -158,7 +158,7 @@ qboolean EndOfScript( qboolean crossline ){
|
|||
qboolean GetToken( qboolean crossline ){
|
||||
char *token_p;
|
||||
|
||||
if ( tokenready ) { // is a token allready waiting?
|
||||
if ( tokenready ) { // is a token already waiting?
|
||||
tokenready = false;
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -159,7 +159,7 @@ class Unpack {
|
|||
readLump.readFully(buffer);
|
||||
|
||||
// quake uses forward slashes, but java requires
|
||||
// they only by the host's seperator, which
|
||||
// they only by the host's separator, which
|
||||
// varies from win to unix
|
||||
fixedString = new StringBuffer (args[2] + File.separator + nameString);
|
||||
for (index = 0 ; index < fixedString.length() ; index++) {
|
||||
|
|
|
|||
|
|
@ -612,7 +612,7 @@ int TestBrushToPlanenum (bspbrush_t *brush, int planenum,
|
|||
WindingIsTiny
|
||||
|
||||
Returns true if the winding would be crunched out of
|
||||
existance by the vertex snapping.
|
||||
existence by the vertex snapping.
|
||||
================
|
||||
*/
|
||||
#define EDGE_LENGTH 0.2
|
||||
|
|
@ -780,9 +780,9 @@ side_t *SelectSplitSide (bspbrush_t *brushes, node_t *node)
|
|||
if (!side->winding)
|
||||
continue; // nothing visible, so it can't split
|
||||
if (side->texinfo == TEXINFO_NODE)
|
||||
continue; // allready a node splitter
|
||||
continue; // already a node splitter
|
||||
if (side->tested)
|
||||
continue; // we allready have metrics for this plane
|
||||
continue; // we already have metrics for this plane
|
||||
if (side->surf & SURF_SKIP)
|
||||
continue; // skip surfaces are never chosen
|
||||
if ( side->visible ^ (pass<2) )
|
||||
|
|
@ -845,7 +845,7 @@ side_t *SelectSplitSide (bspbrush_t *brushes, node_t *node)
|
|||
value = -9999999;
|
||||
|
||||
// save off the side test so we don't need
|
||||
// to recalculate it when we actually seperate
|
||||
// to recalculate it when we actually separate
|
||||
// the brushes
|
||||
if (value > bestvalue)
|
||||
{
|
||||
|
|
@ -1155,7 +1155,7 @@ void SplitBrushList (bspbrush_t *brushes,
|
|||
|
||||
newbrush = CopyBrush (brush);
|
||||
|
||||
// if the planenum is actualy a part of the brush
|
||||
// if the planenum is actually a part of the brush
|
||||
// find the plane and flag it as used so it won't be tried
|
||||
// as a splitter again
|
||||
if (sides & PSIDE_FACING)
|
||||
|
|
|
|||
|
|
@ -142,7 +142,7 @@ bspbrush_t *IntersectBrush (bspbrush_t *a, bspbrush_t *b)
|
|||
===============
|
||||
BrushesDisjoint
|
||||
|
||||
Returns true if the two brushes definately do not intersect.
|
||||
Returns true if the two brushes definitely do not intersect.
|
||||
There will be false negatives for some non-axial combinations.
|
||||
===============
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -360,7 +360,7 @@ void AddBrushBevels (mapbrush_t *b)
|
|||
{
|
||||
for (dir=-1 ; dir <= 1 ; dir+=2, order++)
|
||||
{
|
||||
// see if the plane is allready present
|
||||
// see if the plane is already present
|
||||
for (i=0, s=b->original_sides ; i<b->numsides ; i++,s++)
|
||||
{
|
||||
if (mapplanes[s->planenum].normal[axis] == dir)
|
||||
|
|
@ -444,7 +444,7 @@ void AddBrushBevels (mapbrush_t *b)
|
|||
// behind this plane, it is a proper edge bevel
|
||||
for (k=0 ; k<b->numsides ; k++)
|
||||
{
|
||||
// if this plane has allready been used, skip it
|
||||
// if this plane has already been used, skip it
|
||||
if (PlaneEqual (&mapplanes[b->original_sides[k].planenum]
|
||||
, normal, dist) )
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -179,7 +179,7 @@ AddPortalToNodes
|
|||
void AddPortalToNodes (portal_t *p, node_t *front, node_t *back)
|
||||
{
|
||||
if (p->nodes[0] || p->nodes[1])
|
||||
Error ("AddPortalToNode: allready included");
|
||||
Error ("AddPortalToNode: already included");
|
||||
|
||||
p->nodes[0] = front;
|
||||
p->next[0] = front->portals;
|
||||
|
|
@ -751,7 +751,7 @@ void FloodAreas_r (node_t *node)
|
|||
b = node->brushlist;
|
||||
e = &entities[b->original->entitynum];
|
||||
|
||||
// if the current area has allready touched this
|
||||
// if the current area has already touched this
|
||||
// portal, we are done
|
||||
if (e->portalareas[0] == c_areas || e->portalareas[1] == c_areas)
|
||||
return;
|
||||
|
|
@ -771,7 +771,7 @@ void FloodAreas_r (node_t *node)
|
|||
}
|
||||
|
||||
if (node->area)
|
||||
return; // allready got it
|
||||
return; // already got it
|
||||
node->area = c_areas;
|
||||
|
||||
for (p=node->portals ; p ; p = p->next[s])
|
||||
|
|
@ -806,7 +806,7 @@ void FindAreas_r (node_t *node)
|
|||
}
|
||||
|
||||
if (node->area)
|
||||
return; // allready got it
|
||||
return; // already got it
|
||||
|
||||
if (node->contents & CONTENTS_SOLID)
|
||||
return;
|
||||
|
|
@ -846,7 +846,7 @@ void SetAreaPortalAreas_r (node_t *node)
|
|||
if (node->contents == CONTENTS_AREAPORTAL)
|
||||
{
|
||||
if (node->area)
|
||||
return; // allready set
|
||||
return; // already set
|
||||
|
||||
b = node->brushlist;
|
||||
e = &entities[b->original->entitynum];
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ void WritePortalFile_r (node_t *node)
|
|||
// sometimes planes get turned around when they are very near
|
||||
// the changeover point between different axis. interpret the
|
||||
// plane the same way vis will, and flip the side orders if needed
|
||||
// FIXME: is this still relevent?
|
||||
// FIXME: is this still relevant?
|
||||
WindingPlane (w, normal, &dist);
|
||||
if ( DotProduct (p->plane.normal, normal) < 0.99 )
|
||||
{ // backwards...
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
|
||||
#define BOGUS_RANGE 8192
|
||||
|
||||
#define TEXINFO_NODE -1 // side is allready on a node
|
||||
#define TEXINFO_NODE -1 // side is already on a node
|
||||
|
||||
typedef struct plane_s
|
||||
{
|
||||
|
|
@ -61,7 +61,7 @@ typedef struct side_s
|
|||
int contents; // from miptex
|
||||
int surf; // from miptex
|
||||
qboolean visible; // choose visble planes first
|
||||
qboolean tested; // this plane allready checked as a split
|
||||
qboolean tested; // this plane already checked as a split
|
||||
qboolean bevel; // don't ever use for bsp splitting
|
||||
} side_t;
|
||||
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ node_t *BlockTree (int xl, int yl, int xh, int yh)
|
|||
return node;
|
||||
}
|
||||
|
||||
// create a seperator along the largest axis
|
||||
// create a separator along the largest axis
|
||||
node = AllocNode ();
|
||||
|
||||
if (xh - xl > yh - yl)
|
||||
|
|
|
|||
|
|
@ -156,7 +156,7 @@ void PrintTree_r (node_t *node, int depth)
|
|||
/*
|
||||
=========================================================
|
||||
|
||||
NODES THAT DON'T SEPERATE DIFFERENT CONTENTS CAN BE PRUNED
|
||||
NODES THAT DON'T SEPARATE DIFFERENT CONTENTS CAN BE PRUNED
|
||||
|
||||
=========================================================
|
||||
*/
|
||||
|
|
@ -181,7 +181,7 @@ void PruneNodes_r (node_t *node)
|
|||
&& (node->children[1]->contents & CONTENTS_SOLID) )
|
||||
{
|
||||
if (node->faces)
|
||||
Error ("node->faces seperating CONTENTS_SOLID");
|
||||
Error ("node->faces separating CONTENTS_SOLID");
|
||||
if (node->children[0]->faces || node->children[1]->faces)
|
||||
Error ("!node->faces with children");
|
||||
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ int planeused[MAX_MAP_PLANES];
|
|||
============
|
||||
EmitPlanes
|
||||
|
||||
There is no oportunity to discard planes, because all of the original
|
||||
There is no opportunity to discard planes, because all of the original
|
||||
brushes will be saved in the map.
|
||||
============
|
||||
*/
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user