Author: Not specified Language: c
Description: Not specified Timestamp: 2013-06-17 04:41:35 +0000
View raw paste Reply
  1. static void CG_PlayerFlag( centity_t *cent, qhandle_t hModel ) {
  2.         refEntity_t             ent;
  3.         vec3_t                  angles;
  4.         vec3_t                  axis[3];
  5.         vec3_t                  boltOrg, tAng, getAng, right;
  6.         mdxaBone_t              boltMatrix;
  7.         clientInfo_t    *ci;
  8.  
  9.         if (cent->currentState.number == cg.snap->ps.clientNum &&
  10.                 !cg.renderingThirdPerson)
  11.         {
  12.                 return;
  13.         }
  14.  
  15.         if (!cent->ghoul2)
  16.         {
  17.                 return;
  18.         }
  19.  
  20.         if (cent->currentState.eType == ET_NPC)
  21.         {
  22.                 ci = cent->npcClient;
  23.                 assert(ci);
  24.         }
  25.         else
  26.         {
  27.                 ci = &cgs.clientinfo[cent->currentState.number];
  28.         }
  29.  
  30.         VectorSet( tAng, cent->turAngles[PITCH], cent->turAngles[YAW], cent->turAngles[ROLL] );
  31.  
  32.         trap_G2API_GetBoltMatrix(cent->ghoul2, 0, ci->bolt_llumbar, &boltMatrix, tAng, cent->lerpOrigin, cg.time, cgs.gameModels, cent->modelScale);
  33.         BG_GiveMeVectorFromMatrix(&boltMatrix, ORIGIN, boltOrg);
  34.  
  35.         BG_GiveMeVectorFromMatrix(&boltMatrix, POSITIVE_X, tAng);
  36.         vectoangles(tAng, tAng);
  37.  
  38.         VectorCopy(cent->lerpAngles, angles);
  39.  
  40.         boltOrg[2] -= 12;
  41.         VectorSet(getAng, 0, cent->lerpAngles[1], 0);
  42.         AngleVectors(getAng, 0, right, 0);
  43.         boltOrg[0] += right[0]*8;
  44.         boltOrg[1] += right[1]*8;
  45.         boltOrg[2] += right[2]*8;
  46.  
  47.         angles[PITCH] = -cent->lerpAngles[PITCH]/2-30;
  48.         angles[YAW] = tAng[YAW]+270;
  49.  
  50.         AnglesToAxis(angles, axis);
  51.  
  52.         memset( &ent, 0, sizeof( ent ) );
  53.         VectorMA( boltOrg, 24, axis[0], ent.origin );
  54.  
  55.         angles[ROLL] += 20;
  56.         AnglesToAxis( angles, ent.axis );
  57.  
  58.         ent.hModel = hModel;
  59.  
  60.         if ( 1 /*cg_q4flags.integer*/ )
  61.         {
  62. //              vec3_t angs;
  63.                 int team = 0;
  64.  
  65.                 ent.modelScale[0] = 0.5;
  66.                 ent.modelScale[1] = -0.5;//0.5;//edited by ent; raz0r's simple flag
  67.                 ent.modelScale[2] = 0.5;
  68.                 ScaleModelAxis(&ent);
  69.  
  70.                 /*
  71.                 if (cent->currentState.number == cg.snap->ps.clientNum)
  72.                 { //If we're the current client (in third person), render the flag on our back transparently
  73.                 ent.renderfx |= RF_FORCE_ENT_ALPHA;
  74.                 ent.shaderRGBA[3] = 100;
  75.                 }
  76.                 */
  77.                 //FIXME: Not doing this at the moment because sorting totally messes up
  78.  
  79.                 ent.reType = RT_ORIENTED_QUAD;
  80.  
  81.                 team = cgs.clientinfo[cent->currentState.number].team;
  82.  
  83.                 if (cgs.gametype == GT_CTF)
  84.                 {
  85.                         if (team == TEAM_RED)
  86.                         {
  87.                                 ent.customShader = trap_R_RegisterShaderNoMip( "models/flags/blueflag" );
  88.                         }
  89.                         else
  90.                         {
  91.                                 ent.customShader = trap_R_RegisterShaderNoMip( "models/flags/redflag" );
  92.                         }
  93.                 }
  94.                 ent.shaderRGBA[0] = ent.shaderRGBA[1] = ent.shaderRGBA[2] = 255;
  95.                 ent.shaderRGBA[3] = 200;
  96.                 ent.radius = 32;
  97.                 /* works wrong :s
  98.                 VectorCopy( cent->currentState.angles, angs );
  99.                 angs[2] = 0.0f;
  100.                 AnglesToAxis( angs, ent.axis );
  101.                 */
  102.                 ent.origin[2] += 17;
  103.                 ent.renderfx |= RF_FORCE_ENT_ALPHA;
  104.  
  105.                 trap_R_AddRefEntityToScene( &ent/*, cent->currentState.number*/ );
  106.                 ent.modelScale[0] = 1.0;
  107.                 ent.modelScale[1] = -1.0;
  108.                 ent.modelScale[2] = 1.0;
  109.                 ScaleModelAxis( &ent );
  110.                 //      trap_R_AddRefEntityToScene( &ent );
  111.                 trap_R_AddRefEntityToScene( &ent/*, cent->currentState.number*/ );
  112.  
  113.                 return;
  114.         }
  115.  
  116.         ent.modelScale[0] = 0.5;
  117.         ent.modelScale[1] = 0.5;
  118.         ent.modelScale[2] = 0.5;
  119.         ScaleModelAxis(&ent);
  120.  
  121.         /*
  122.         if (cent->currentState.number == cg.snap->ps.clientNum)
  123.         { //If we're the current client (in third person), render the flag on our back transparently
  124.                 ent.renderfx |= RF_FORCE_ENT_ALPHA;
  125.                 ent.shaderRGBA[3] = 100;
  126.         }
  127.         */
  128.         //FIXME: Not doing this at the moment because sorting totally messes up
  129.  
  130.         trap_R_AddRefEntityToScene( &ent );
  131. }
View raw paste Reply