]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'master' into mirceakitsune/damage_effects
authorMircea Kitsune <sonichedgehog_hyperblast00@yahoo.com>
Mon, 16 Jan 2012 19:54:53 +0000 (21:54 +0200)
committerMircea Kitsune <sonichedgehog_hyperblast00@yahoo.com>
Mon, 16 Jan 2012 19:54:53 +0000 (21:54 +0200)
1  2 
defaultXonotic.cfg
qcsrc/common/util.qc
qcsrc/common/util.qh

diff --combined defaultXonotic.cfg
index 66eedac17663451302383757f0a7afcbe139df67,b6642452010bfbfe513027d966206d399ddcefb5..b76b602b4c3e42a1dfb24a2ad0c024a24f378801
@@@ -321,14 -321,6 +321,14 @@@ set g_telefrags_teamplay 1 "never telef
  set g_telefrags_avoid 1 "when teleporters have a random destination, avoid teleporting to locations where a telefrag would happen"
  set g_teleport_maxspeed 0 "maximum speed that a player can keep when going through a teleporter (if a misc_teleporter_dest also has a cap the smallest one of these will be used), 0 = don't limit, -1 = keep no speed"
  
 +seta cl_damageeffect 1 "enable weapon damage effects. 1 enables the feature on skeletal models, 2 on any model"
 +seta cl_damageeffect_ticrate 0.1 "particle spawn rate"
 +seta cl_damageeffect_bones 5 "how many damages to allow on a rigged mesh at once (non-skeletal objects are limited to one)"
 +seta cl_damageeffect_distribute 1 "divide particle intensity if multiple damages are present"
 +seta cl_damageeffect_lifetime 0.1 "how much a damage effect lasts, based on damage amount"
 +seta cl_damageeffect_lifetime_min 3 "minimum lifetime a damage effect may have"
 +seta cl_damageeffect_lifetime_max 6 "maximum lifetime a damage effect may have"
 +
  set g_respawn_ghosts 1 "if 1 dead bodies become ghosts and float away when the player respawns"
  set g_respawn_ghosts_speed 5 "the speed with which respawn ghosts float and rotate"
  set g_respawn_ghosts_maxtime 6 "maximum amount of time a respawn ghost can last, minimum time is half this value. 0 disables and ghosts fade when the body would"
@@@ -1784,6 -1776,7 +1784,7 @@@ seta cl_forceplayercolors 0 "make every
  seta cl_forcemyplayermodel "" "set to the model file name you want to show yourself as (requires server to have sv_use_csqc_players 1; does not affect how enemies look with cl_forceplayermodels)"
  seta cl_forcemyplayerskin 0 "set to the skin number you want to show yourself as (requires server to have sv_use_csqc_players 1; does not affect how enemies look with cl_forceplayermodels)"
  seta cl_forcemyplayercolors 0 "set to the color value (encoding is same as _cl_color) for your own player model (requires server to have sv_use_csqc_players 1, and is ignored in teamplay; does not affect how enemies look with cl_forceplayermodels)"
+ seta cl_predictionerrorcompensation 0 "try to compensate for prediction errors and reduce preceived lag (requires server to have sv_use_csqc_players 1)"
  
  // debug cvars for keyhunt attaching
  set _angles "0 0 0"
diff --combined qcsrc/common/util.qc
index 9e4bdf7e74c90fcb0df4f4fcf062bfee62d691ea,09a58c0997bc9a312b3cdd12307e814200562453..1930d7c6fc4a04f2c7d33d029631f79bae308c29
@@@ -2213,18 -2213,22 +2213,38 @@@ float ReadApproxPastTime(
  }
  #endif
  
 +#ifndef MENUQC
 +.float skeleton_bones_index;
 +void Skeleton_SetBones(entity e)
 +{
 +      // set skeleton_bones to the total number of bones on the model
 +      if(e.skeleton_bones_index == e.modelindex)
 +              return; // same model, nothing to update
 +
 +      float skelindex;
 +      skelindex = skel_create(e.modelindex);
 +      e.skeleton_bones = skel_get_numbones(skelindex);
 +      skel_delete(skelindex);
 +      e.skeleton_bones_index = e.modelindex;
 +}
 +#endif
++
+ string to_execute_next_frame;
+ void execute_next_frame()
+ {
+       if(to_execute_next_frame)
+       {
+               localcmd("\n", to_execute_next_frame, "\n");
+               strunzone(to_execute_next_frame);
+               to_execute_next_frame = string_null;
+       }
+ }
+ void queue_to_execute_next_frame(string s)
+ {
+       if(to_execute_next_frame)
+       {
+               s = strcat(s, "\n", to_execute_next_frame);
+               strunzone(to_execute_next_frame);
+       }
+       to_execute_next_frame = strzone(s);
+ }
diff --combined qcsrc/common/util.qh
index db075ec2a0576efc3cbec05f3b1a433d54fbebe8,485e190b9e47b0550a4e5cbaf3e809357f7548b8..5685f4db27d42ec177e03e666a6939c2eb8f8489
@@@ -291,15 -291,13 +291,19 @@@ float InterpretBoolean(string input)
  // generic shutdown handler
  void Shutdown();
  
 +#ifndef MENUQC
 +.float skeleton_bones;
 +void Skeleton_SetBones(entity e);
 +// loops through the tags of model v using counter tagnum
 +#define FOR_EACH_TAG(v) float tagnum; Skeleton_SetBones(v); for(tagnum = 0; tagnum < v.skeleton_bones; tagnum++, gettaginfo(v, tagnum))
 +#endif
  #ifdef SVQC
  void WriteApproxPastTime(float dst, float t);
  #endif
  #ifdef CSQC
  float ReadApproxPastTime();
  #endif
+ // execute-stuff-next-frame subsystem
+ void execute_next_frame();
+ void queue_to_execute_next_frame(string s);