r5752 - in trunk/data: . qcsrc/client qcsrc/server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Thu Feb 5 03:41:16 EST 2009
Author: div0
Date: 2009-02-05 03:41:16 -0500 (Thu, 05 Feb 2009)
New Revision: 5752
Modified:
trunk/data/qcsrc/client/Main.qc
trunk/data/qcsrc/client/miscfunctions.qc
trunk/data/qcsrc/client/waypointsprites.qc
trunk/data/qcsrc/server/gamecommand.qc
trunk/data/shotorigin_adjuster.cfg
Log:
improved the shot origin adjuster:
- now can load bone positions (in case this works in DP)
- displays coordinates above the adjuster
Modified: trunk/data/qcsrc/client/Main.qc
===================================================================
--- trunk/data/qcsrc/client/Main.qc 2009-02-04 21:31:51 UTC (rev 5751)
+++ trunk/data/qcsrc/client/Main.qc 2009-02-05 08:41:16 UTC (rev 5752)
@@ -364,17 +364,37 @@
self.angles_x = -self.angles_x;
R_AddEntity(self);
}
+void ShotOrg_Draw2D()
+{
+ vector coord2d_topleft, coord2d_topright, coord2d;
+ string s;
+ vector fs;
+ s = vtos(self.view_ofs);
+ s = substring(s, 1, strlen(s) - 2);
+ if(tokenize_sane(s) == 3)
+ s = strcat(argv(0), " ", argv(1), " ", argv(2));
+
+ coord2d_topleft = project_3d_to_2d(self.origin + view_up * 4 - view_right * 4);
+ coord2d_topright = project_3d_to_2d(self.origin + view_up * 4 + view_right * 4);
+
+ fs = '1 1 0' * ((coord2d_topright_x - coord2d_topleft_x) / stringwidth(s, FALSE));
+
+ coord2d = coord2d_topleft - '0 1 0' * fs_y;
+ coord2d_z = 0;
+ drawstring(coord2d, s, fs, '1 1 1', 1, 0);
+}
+
void ShotOrg_Spawn()
{
debug_shotorg = spawn();
debug_shotorg.draw = ShotOrg_Draw;
+ debug_shotorg.draw2d = ShotOrg_Draw2D;
debug_shotorg.renderflags = RF_VIEWMODEL;
debug_shotorg.effects = EF_FULLBRIGHT;
precache_model("models/shotorg_adjuster.md3");
setmodel(debug_shotorg, "models/shotorg_adjuster.md3");
- debug_shotorg.scale = 3;
- debug_shotorg.alpha = 0.7;
+ debug_shotorg.scale = 2;
debug_shotorg.view_ofs = '25 8 -8';
}
@@ -426,7 +446,6 @@
ShotOrg_Spawn();
else
debug_shotorg.view_ofs = debug_shotorg.view_ofs + stov(argv(1));
- print(vtos(debug_shotorg.view_ofs), "\n");
localcmd("sv_cmd debug_shotorg \"", vtos(debug_shotorg.view_ofs), "\"\n");
}
else if(cmd == "shotorg_movez") {
@@ -434,7 +453,6 @@
ShotOrg_Spawn();
else
debug_shotorg.view_ofs = debug_shotorg.view_ofs + stof(argv(1)) * (debug_shotorg.view_ofs * (1 / debug_shotorg.view_ofs_x)); // closer/farther, same xy pos
- print(vtos(debug_shotorg.view_ofs), "\n");
localcmd("sv_cmd debug_shotorg \"", vtos(debug_shotorg.view_ofs), "\"\n");
}
else if(cmd == "shotorg_set") {
@@ -442,7 +460,6 @@
ShotOrg_Spawn();
else
debug_shotorg.view_ofs = stov(argv(1));
- print(vtos(debug_shotorg.view_ofs), "\n");
localcmd("sv_cmd debug_shotorg \"", vtos(debug_shotorg.view_ofs), "\"\n");
}
else if(cmd == "shotorg_setz") {
@@ -450,7 +467,6 @@
ShotOrg_Spawn();
else
debug_shotorg.view_ofs = debug_shotorg.view_ofs * (stof(argv(1)) / debug_shotorg.view_ofs_x); // closer/farther, same xy pos
- print(vtos(debug_shotorg.view_ofs), "\n");
localcmd("sv_cmd debug_shotorg \"", vtos(debug_shotorg.view_ofs), "\"\n");
}
else if(cmd == "shotorg_end") {
Modified: trunk/data/qcsrc/client/miscfunctions.qc
===================================================================
--- trunk/data/qcsrc/client/miscfunctions.qc 2009-02-04 21:31:51 UTC (rev 5751)
+++ trunk/data/qcsrc/client/miscfunctions.qc 2009-02-05 08:41:16 UTC (rev 5752)
@@ -395,3 +395,16 @@
else
return stof(s);
}
+
+vector project_3d_to_2d(vector vec)
+{
+ vec = cs_project(vec);
+ if(cs_project_is_b0rked)
+ {
+ vec_x += vid_width / 2;
+ vec_y += vid_height / 2;
+ }
+ vec_x *= vid_conwidth / vid_width;
+ vec_y *= vid_conheight / vid_height;
+ return vec;
+}
Modified: trunk/data/qcsrc/client/waypointsprites.qc
===================================================================
--- trunk/data/qcsrc/client/waypointsprites.qc 2009-02-04 21:31:51 UTC (rev 5751)
+++ trunk/data/qcsrc/client/waypointsprites.qc 2009-02-05 08:41:16 UTC (rev 5752)
@@ -1,16 +1,3 @@
-vector project_3d_to_2d(vector vec)
-{
- vec = cs_project(vec);
- if(cs_project_is_b0rked)
- {
- vec_x += vid_width / 2;
- vec_y += vid_height / 2;
- }
- vec_x *= vid_conwidth / vid_width;
- vec_y *= vid_conheight / vid_height;
- return vec;
-}
-
float waypointsprite_initialized;
float waypointsprite_fadedistance;
float waypointsprite_normdistance;
Modified: trunk/data/qcsrc/server/gamecommand.qc
===================================================================
--- trunk/data/qcsrc/server/gamecommand.qc 2009-02-04 21:31:51 UTC (rev 5751)
+++ trunk/data/qcsrc/server/gamecommand.qc 2009-02-05 08:41:16 UTC (rev 5752)
@@ -577,8 +577,8 @@
void GameCommand(string command)
{
float argc;
- entity client;
- float entno;
+ entity client, e;
+ float entno, i;
argc = tokenize_sane(command);
if(argv(0) == "help" || argc == 0)
@@ -621,7 +621,6 @@
if(argv(0) == "make_mapinfo")
{
- entity e;
e = spawn();
e.classname = "make_mapinfo";
e.think = make_mapinfo_Think;
@@ -832,6 +831,29 @@
return;
}
+ if(argv(0) == "gettaginfo") if(argc >= 4)
+ {
+ e = spawn();
+ if(argv(1) == "w")
+ setmodel(e, (nextent(world)).weaponentity.model);
+ else
+ setmodel(e, argv(1));
+ e.frame = stof(argv(2));
+ i = gettagindex(e, argv(3));
+ if(i)
+ {
+ print("model ", e.model, " frame ", ftos(e.frame), " tag ", argv(3));
+ print(" index = ", ftos(i));
+ print(" vector = ", vtos(gettaginfo(e, i)), "\n");
+ if(argc >= 6)
+ localcmd(strcat(argv(4), vtos(gettaginfo(e, i)), argv(5), "\n"));
+ }
+ else
+ print("bone not found\n");
+ remove(e);
+ return;
+ }
+
print("Invalid command. For a list of supported commands, try sv_cmd help.\n");
}
Modified: trunk/data/shotorigin_adjuster.cfg
===================================================================
--- trunk/data/shotorigin_adjuster.cfg 2009-02-04 21:31:51 UTC (rev 5751)
+++ trunk/data/shotorigin_adjuster.cfg 2009-02-05 08:41:16 UTC (rev 5752)
@@ -20,4 +20,8 @@
bind KP_DIVIDE "cl_cmd shotorg_end"
+bind KP_ENTER "commandmode _load_shotorigin_from_bone"
+
+alias _load_shotorigin_from_bone "sv_cmd gettaginfo w 0 $1 \"cl_cmd shotorg_set \\\"\" \"\\\"\""
+
prvm_edictset server 1 alpha 0.8
More information about the nexuiz-commits
mailing list