diff --git a/reaction/Solution2.sln b/reaction/Solution2.sln deleted file mode 100644 index 0654de9c..00000000 --- a/reaction/Solution2.sln +++ /dev/null @@ -1,21 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 7.00 -Global - GlobalSection(SourceCodeControl) = preSolution - SccNumberOfProjects = 1 - SccProjectName0 = reaction1 - SccLocalPath0 = . - SccProvider0 = MSSCCI:Jalindi\u0020Igloo - CanCheckoutShared = true - SolutionUniqueID = {527F0046-311B-436C-A50A-829BB85EB0D9} - EndGlobalSection - GlobalSection(SolutionConfiguration) = preSolution - EndGlobalSection - GlobalSection(ProjectDependencies) = postSolution - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal diff --git a/reaction/Solution2.vssscc b/reaction/Solution2.vssscc deleted file mode 100644 index 6cb031bc..00000000 --- a/reaction/Solution2.vssscc +++ /dev/null @@ -1,10 +0,0 @@ -"" -{ -"FILE_VERSION" = "9237" -"ENLISTMENT_CHOICE" = "NEVER" -"PROJECT_FILE_RELATIVE_PATH" = "" -"NUMBER_OF_EXCLUDED_FILES" = "0" -"ORIGINAL_PROJECT_FILE_PATH" = "" -"NUMBER_OF_NESTED_PROJECTS" = "0" -"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROJECT" -} diff --git a/reaction/make.bat b/reaction/make.bat deleted file mode 100755 index 75411ed3..00000000 --- a/reaction/make.bat +++ /dev/null @@ -1,43 +0,0 @@ -goto %1 - -:cgame -cd cgame -call cgame -cd.. -goto done - -:game -cd game -call game -cd.. -goto done - -:ui -cd ui -call ui -cd .. -goto done - -:all -cd cgame -call cgame -cd .. -cd game -call game -cd .. -cd ui -call ui -cd .. - - -:done -cd\ -cd quake3 -cd baseq3 -cd vm -copy /Y *.qvm "c:\program files\quake iii arena\reaction\vm" -del *.qvm -cd \ -cd reaction - - diff --git a/reaction/makeall.bat b/reaction/makeall.bat deleted file mode 100755 index 22755b33..00000000 --- a/reaction/makeall.bat +++ /dev/null @@ -1,17 +0,0 @@ -cd cgame -call cgame -cd.. -cd game -call game -cd.. -cd ui -call ui -cd.. -cd.. -cd baseq3 -cd vm -copy /Y *.qvm "c:\program files\quake iii arena\source\vm" -cd .. -cd .. -cd source - diff --git a/reaction/bleeding.txt b/reaction/misc/bleeding.txt similarity index 100% rename from reaction/bleeding.txt rename to reaction/misc/bleeding.txt diff --git a/reaction/misc/todo_ta_ui_optimizations.txt b/reaction/misc/todo_ta_ui_optimizations.txt new file mode 100644 index 00000000..8d5279aa --- /dev/null +++ b/reaction/misc/todo_ta_ui_optimizations.txt @@ -0,0 +1,3 @@ +Item_InitControls -> add tracked cvar +Register Cvars -> init +Update cvar -> Update items \ No newline at end of file diff --git a/reaction/misc/ui_polyalloc.c b/reaction/misc/ui_polyalloc.c new file mode 100644 index 00000000..fa996519 --- /dev/null +++ b/reaction/misc/ui_polyalloc.c @@ -0,0 +1,201 @@ +#include "ui_local.h" + +uiQuad_t uiQuadArray[MAX_QUADS]; + + +uiQuad_t *UI_AllocQuad() +{ + int i; + for (i=0; inext = NULL; + if (!list->qList) + { + list->qList = quad; + } else { + uiQuad_t *p=list->qList; + while (p && p->next) + { + p = p->next; + } + p->next=quad; + } + if (color) + { + quad->verts[0].modulate[0] = quad->verts[1].modulate[0] = quad->verts[2].modulate[0] = quad->verts[3].modulate[0] = ((int)(color[0]*255))&255; + quad->verts[0].modulate[1] = quad->verts[1].modulate[1] = quad->verts[2].modulate[1] = quad->verts[3].modulate[1] = ((int)(color[1]*255))&255; + quad->verts[0].modulate[2] = quad->verts[1].modulate[2] = quad->verts[2].modulate[2] = quad->verts[3].modulate[2] = ((int)(color[2]*255))&255; + quad->verts[0].modulate[3] = quad->verts[1].modulate[3] = quad->verts[2].modulate[3] = quad->verts[3].modulate[3] = ((int)(color[3]*255))&255; + quad->keepColor = qtrue; + } else { + quad->verts[0].modulate[0] = quad->verts[1].modulate[0] = quad->verts[2].modulate[0] = quad->verts[3].modulate[0] = 255; + quad->verts[0].modulate[1] = quad->verts[1].modulate[1] = quad->verts[2].modulate[1] = quad->verts[3].modulate[1] = 255; + quad->verts[0].modulate[2] = quad->verts[1].modulate[2] = quad->verts[2].modulate[2] = quad->verts[3].modulate[2] = 255; + quad->verts[0].modulate[3] = quad->verts[1].modulate[3] = quad->verts[2].modulate[3] = quad->verts[3].modulate[3] = 255; + quad->keepColor = qfalse; + } + quad->verts[0].st[0]=s; + quad->verts[0].st[1]=t; + quad->verts[1].st[0]=s2; + quad->verts[1].st[1]=t; + quad->verts[2].st[0]=s2; + quad->verts[2].st[1]=t2; + quad->verts[3].st[0]=s; + quad->verts[3].st[1]=t2; + VectorSet(quad->verts[0].xyz, 320, 320-x, 240-y); + VectorSet(quad->verts[1].xyz, 320, quad->verts[0].xyz[1]-u[0]*w, quad->verts[0].xyz[2]-u[1]*w); + VectorSet(quad->verts[2].xyz, 320, quad->verts[1].xyz[1]-v[0]*h, quad->verts[1].xyz[2]-v[1]*h); + VectorSet(quad->verts[3].xyz, 320, quad->verts[0].xyz[1]-v[0]*h, quad->verts[0].xyz[2]-v[1]*h); + //uiInfo.uiDC.polyZ += UI_POLY_Z_OFFSET; + quad->hShader = hShader; + return quad; + } + } + return NULL; +} + +void QuadList_SetCursorColor(uiQuadList_t *list, const float *color) +{ + if (!list || !list->qCursor) + return; + if (color) + { + unsigned char r, g, b, a; + int clr; + r = color[0] * 255; + g = color[1] * 255; + b = color[2] * 255; + a = color[3] * 255; + _asm { + mov bl, b; + mov bh, a; + shl ebx, 16; + mov bl, r; + mov bh, g; + mov clr, ebx; + mov eax, list; + mov eax, [eax+4]; //list->qCursor + mov dword ptr[eax+20], ebx; //list->qCursor->verts[0].modulate + mov dword ptr[eax+44], ebx; //list->qCursor->verts[1].modulate + mov dword ptr[eax+68], ebx; //list->qCursor->verts[2].modulate + mov dword ptr[eax+92], ebx; //list->qCursor->verts[3].modulate + } + } + list->qCursor = list->qCursor->next; +} + +void QuadList_Print(uiQuadList_t *quadList, const float *color) +{ + if (quadList && quadList->qList) + { + unsigned char r, g, b, a; + int clr; + uiQuad_t *p = quadList->qList; + /* + refdef_t scene; + + memset(&scene, 0, sizeof(scene)); + scene.x=0; + scene.y=0; + scene.width=640 * uiInfo.uiDC.xscale; + scene.height=480 * uiInfo.uiDC.yscale ; + scene.fov_x=90; + scene.fov_y=73.739795291688042593711225118187f; + scene.rdflags = RDF_NOWORLDMODEL; + AxisClear(scene.viewaxis); + trap_R_ClearScene(); + */ + + if (color) + { + r = color[0] * 255; + g = color[1] * 255; + b = color[2] * 255; + a = color[3] * 255; + _asm { + mov al, b; + mov ah, a; + shl eax, 16; + mov al, r; + mov ah, g; + mov clr, eax; + } + } + while (p) + { + if (color && !p->keepColor) + { + _asm { + mov ebx, clr; + mov eax, p; + mov dword ptr[eax+20], ebx; //p->verts[0].modulate + mov dword ptr[eax+44], ebx; //p->verts[1].modulate + mov dword ptr[eax+68], ebx; //p->verts[2].modulate + mov dword ptr[eax+92], ebx; //p->verts[3].modulate + } + } + //trap_R_AddPolyToScene(p->hShader, 4, p->verts); + //uiInfo.uiDC.pendingPolys++; + + UI_AddQuadToScene(p->hShader, p->verts); + + p = p->next; + } + //trap_R_RenderScene(&uiInfo.uiDC.scene2D); + } +} + +void QuadList_Clear(uiQuadList_t *list) +{ + if (list) + { + uiQuad_t *p = list->qList; + while (p) + { + p->inUse = qfalse; + p = p->next; + } + } + list->qList = NULL; +} + + +//----------------------------------------------- + +// +// ui_polyalloc.c +// + +typedef struct uiQuad_s +{ + polyVert_t verts[4]; + qhandle_t hShader; + qboolean inUse, keepColor; + struct uiQuad_s *next; +} uiQuad_t; + +#define MAX_QUADS 2048 +extern uiQuad_t uiQuadArray[MAX_QUADS]; + +typedef struct +{ + uiQuad_t *qList, *qCursor; +} uiQuadList_t; +