Commit graph

24 commits

Author SHA1 Message Date
Zack Middleton
bc4ca164e0 From /dev/humancontroller:
really fix the confusion with game entity and refentity numbers

for any natural number M, the following is logical as a whole:
- the array size for refentities is M;
- the refentity number limit is M-1, ie., each refentity number is in [0..M-1];
- the special number for the world is M.

before r1429, the code was roughly the following:

// constants related to the game, should not be used by the renderer

// renderer stuff
refEntity_t refEntities[MAX_ENTITIES];
int numRefEntities = 0;

void addRefEntity(refEntity_t re)
{
	if (numRefEntities >= ENTITYNUM_WORLD)
		return; // full
	refEntities[numRefEntities++] = re;
}

void render(int num)
{
	if (num == ENTITYNUM_WORLD)
		renderWorld();
	else
		renderRefEntity(refEntities[num]);
}

so before r1429,
- the array size for refentities was 1023;
- the refentity number limit was 1021, ie., each refentity number was in [0..1021]; and
- the special number for the world entity was 1022.
this was a small waste of memory, as the last array element wasn't used.

r1429 changed
	if (numRefEntities >= ENTITYNUM_WORLD)
to
	if (numRefEntities >= MAX_ENTITIES).

this creates the following configuration:
- the array size for refentities is 1023;
- the refentity number limit is 1022, ie., each refentity number is in [0..1022]; and
- the special number for the world entity is 1022.

r1429 just makes things worse: it allows 1 more refentity to be added, but that entity doesn't get drawn anyway, as its number will be equal to the special number for the world. this is a small waste of not only memory, but also processing time.

perhaps in XreaL,

ENTITYNUM_WORLD is a game entity constant, and has nothing to do with refentities. a new REFENTITYNUM_WORLD constant should be added to denote the special number for the world, and that constant should be used in the renderer code in place of ENTITYNUM_WORLD. so define such a constant, and let it be equal to MAX_ENTITIES, which is 1023.
2012-10-17 21:17:37 +00:00
Zack Middleton
0724458818 Fixed usage of various entity defines. 2011-11-05 01:02:35 +00:00
Thilo Schulz
23f6fd1633 Bug 5094 - Code cleanup, patch by Zack Middleton and DevHC. Fixes unused-but-set gcc warnings 2011-07-29 12:27:00 +00:00
Thilo Schulz
d37b2da593 - Add licence headers to new files
- Add patch from Zack Middleton which fixes a few issues still
2011-05-02 20:30:14 +00:00
Thilo Schulz
c5e2654b54 - Add Inter-Quake Model (IQM) Format support, patch by gimhael with minor modifications by myself (#4965)
- Changed model_t::md4 to model_t::modelData
- Fix R_ModelBounds for MD4, MDR and IQM models (#4966)
- Support Model format fallback similar to image formats in tr_image.c, patch by Zack Middleton (#4967)
2011-05-02 15:50:19 +00:00
Thilo Schulz
06d12f6085 Replace a few numeric constants with already defined macros, patch by ZTurtleMan 2011-04-26 09:48:40 +00:00
Zachary Slater
49a2e1913e < sg_Tequila> says that this is busted. Thilo will hopefully be pleased. 2009-06-10 19:47:45 +00:00
Thilo Schulz
5e108751f2 fix code cleanup 2009-06-10 10:41:11 +00:00
Thilo Schulz
a7417a4bde minor code cleanup 2009-06-10 09:00:31 +00:00
Thilo Schulz
b9bcf3da94 How did this happen? 2009-06-10 08:25:01 +00:00
Thilo Schulz
10ed996784 - replace a few constant values with GL macros in tr_cmds.c
- tidy up top of tr_types.h a bit, change flags to hex representation
- make ROM cvar enforcing really work
- remove cg_stereoSeparation from cgame as it is obsolete.
- Add CG_DrawCrosshair3D so people see crosshair correctly when stereoseparation is enabled
2008-05-01 14:56:57 +00:00
Thilo Schulz
425c351d1b - Implement stereo rendering with anaglyph images.
- Add r_greyscale for black&white rendering
2008-04-27 17:32:14 +00:00
Tim Angus
a596185844 * Fixed radix sort on big endian platforms (from tjw, blame Timbo for the bug) 2006-04-14 19:54:56 +00:00
Tim Angus
e4b7a04d5c * Replaced a bunch of inline and __inline with ID_INLINE
* Replaced a bunch of __i386__ with id386
* General tidy up of asm preprocessor decisions
* Removed C_ONLY from the dedicated server build
2005-11-04 22:32:00 +00:00
Tim Angus
05e8ab9538 * Added STATUS
* Updated TODO
* Moved ChangeLog to root
* Updated ChangeLog
* s/Foobar/Quake III Arena Source Code/
* Biggest patch EVAR. I wonder how many mail boxes this will fill...
2005-10-29 01:53:09 +00:00
Tim Angus
3857ce21c4 * Replaced drawSurfs qsort algorithm with a radix sort
+ Performance is comparable, although generally slightly
    worse, but...
  + Radix is a stable sort algorithm, so overlapping
    coplanar drawSurfs (i.e. with the same sort key) no
    longer flicker indeterminately
  + Also removes the dubious comment: "FIXME: this was 
    lifted and modified from the microsoft lib source..."
2005-10-10 00:37:54 +00:00
Tim Angus
4c6f59c541 * Applied Thilo Schulz's MDR patch 2005-09-23 17:08:25 +00:00
Six
38e3825516 Changed inline to __inline.
Visual C does not accept the inline keyword, only __inline.

Visual C does not recognize the #warning compiler directive
2005-09-04 05:19:58 +00:00
Zachary Slater
ed2ad48122 https://bugzilla.icculus.org/show_bug.cgi?id=2348 2005-08-28 18:12:43 +00:00
Ludwig Nussel
5ae70d54b0 remove svn:executable property 2005-08-28 17:54:51 +00:00
Zachary Slater
f46ede91fb Ludwig's 1st diff: Some 64bit fixes for x86_64. Also fixes Makefile build. 2005-08-27 02:24:00 +00:00
Zachary Slater
59cce31e75 newlines fixed 2005-08-26 17:39:27 +00:00
Zachary Slater
5b755058f5 Itsa me, quake3io! 2005-08-26 04:48:05 +00:00
Travis Bradshaw
dbe4ddb103 The Quake III Arena sources as originally released under the GPL license on August 20, 2005. 2012-01-31 13:41:34 -06:00