From 6cafda8ffa282c400edcfd3468dab164de72b542 Mon Sep 17 00:00:00 2001
From: Spoike <acceptthis@users.sourceforge.net>
Date: Sun, 7 Aug 2005 13:18:43 +0000
Subject: [PATCH] Small tweeks

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@1207 fc73d0e0-1445-4013-8a0c-d673dee63da5
---
 engine/client/cl_ui.c | 58 +++++++++++++++++++++++++++++++++++--------
 1 file changed, 47 insertions(+), 11 deletions(-)

diff --git a/engine/client/cl_ui.c b/engine/client/cl_ui.c
index 2a7a169b8..65c4d7587 100644
--- a/engine/client/cl_ui.c
+++ b/engine/client/cl_ui.c
@@ -29,6 +29,7 @@ void SWDraw_ImageColours (float r, float g, float b, float a);
 
 netadr_t ui_pings[MAX_PINGREQUESTS];
 
+#define UITAGNUM 2452
 
 
 #define MAX_VMUI_FILES 8
@@ -337,29 +338,55 @@ void VQ3_AddEntity(const q3refEntity_t *q3)
 	ent.model = q3->hModel;
 	ent.frame = q3->frame;
 	ent.oldframe = q3->oldframe;
-	ent.angles[0] = (atan2(q3->axis[0][2], sqrt(q3->axis[0][1]*q3->axis[0][1]+q3->axis[0][0]*q3->axis[0][0])) * 180 / M_PI);
-	ent.angles[1] = (atan2(q3->axis[0][1], q3->axis[0][0]) * 180 / M_PI);
-	ent.angles[2] = 0;//(atan2(q3->axis[2][1], q3->axis[2][0]) * 180 / M_PI);;
 	memcpy(ent.axis, q3->axis, sizeof(q3->axis));
 	ent.lerpfrac = q3->backlerp;
 	ent.alpha = 1;
 	ent.scale = 1;
+
+	switch(q3->reType)
+	{
+	case RT_MODEL:
+//		Con_Printf("Model\n");
+		break;
+	case RT_POLY:
+		Con_Printf("Poly\n");
+		break;
+	case RT_SPRITE:
+		Con_Printf("Sprite\n");
+		break;
+	case RT_BEAM:
+		Con_Printf("Beam\n");
+		break;
+	case RT_RAIL_CORE:
+		Con_Printf("RailCore\n");
+		break;
+	case RT_RAIL_RINGS:
+		Con_Printf("RailRings\n");
+		break;
+	case RT_LIGHTNING:
+		Con_Printf("Lightning\n");
+		break;
+	case RT_PORTALSURFACE:		// doesn't draw anything, just info for portals
+		Con_Printf("PortalSurface\n");
+		return;
+
+	}
+
+	if (q3->customSkin)
+		ent.skinnum = Mod_SkinForName(ent.model, q3->customSkin);
 #ifdef Q3SHADERS
 	ent.forcedshader = (void*)q3->customShader;
 	*(int*)ent.shaderRGBA = *(int*)q3->shaderRGBA;
 	ent.shaderTime = q3->shaderTime;
 #endif
+	if (q3->renderfx & Q3RF_FIRST_PERSON)
+		ent.flags |= Q2RF_WEAPONMODEL;
 	if (q3->renderfx & Q3RF_DEPTHHACK)
 		ent.flags |= Q2RF_DEPTHHACK;
 	if (q3->renderfx & Q3RF_THIRD_PERSON)
-	{
 		ent.flags |= Q2RF_VIEWERMODEL;
-		return;
-	}
-	if (q3->renderfx & Q3RF_FIRST_PERSON)
-		ent.flags |= Q2RF_WEAPONMODEL;
 	VectorCopy(q3->origin, ent.origin);
-	V_AddEntity(&ent);
+	V_AddAxisEntity(&ent);
 }
 
 int VM_LerpTag(void *out, model_t *model, int f1, int f2, float l2, char *tagname)
@@ -451,7 +478,8 @@ void VQ3_RenderView(const q3refdef_t *ref)
 	r_refdef.viewangles[0] = -(atan2(ref->viewaxis[0][2], sqrt(ref->viewaxis[0][1]*ref->viewaxis[0][1]+ref->viewaxis[0][0]*ref->viewaxis[0][0])) * 180 / M_PI);
 	r_refdef.viewangles[1] = (atan2(ref->viewaxis[0][1], ref->viewaxis[0][0]) * 180 / M_PI);
 	r_refdef.viewangles[2] = 0;
-	r_refdef.flags = ref->rdflags;
+	if (ref->rdflags & 1)
+		r_refdef.flags |= Q2RDF_NOWORLDMODEL;
 	r_refdef.fov_x = ref->fov_x;
 	r_refdef.fov_y = ref->fov_y;
 	r_refdef.vrect.x = ref->x;
@@ -459,6 +487,8 @@ void VQ3_RenderView(const q3refdef_t *ref)
 	r_refdef.vrect.width = ref->width;
 	r_refdef.vrect.height = ref->height;
 	r_refdef.time = ref->time/1000.0f;
+	r_refdef.useperspective = true;
+	r_refdef.currentplayernum = -1;
 
 	memcpy(cl.q2frame.areabits, ref->areamask, sizeof(cl.q2frame.areabits));
 #ifdef RGLQUAKE
@@ -660,7 +690,13 @@ long UI_SystemCallsEx(void *offset, unsigned int mask, int fn, const long *arg)
 		break;
 
 	case UI_PRECACHE_SKIN:
-		VM_LONG(ret) = 1;	//precache skin - engine ignores these anyway... (for now)
+		{
+			char *buf;
+			char *skinname = VM_POINTER(arg[0]);
+			buf = Z_TagMalloc(strlen(skinname)+1, UITAGNUM);
+			strcpy(buf, skinname);
+			VM_LONG(ret) = (int)buf;	//precache skin - engine ignores these anyway... (for now)
+		}
 		break;
 
 	case UI_DRAW_CACHEPIC: