亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? surface.cpp

?? this keik game source
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
   surf_name = ev->GetString(1);
   if (!(num = SurfaceExists(surf_name)))
      {
      ev->Error("SurfaceModifier::SetDamage", "surface name %s is not found\n", surf_name);
      }

   svsurf=&g_surfaces[num];
   svsurf->s.trans_angle = ev->GetInteger(2);
   svsurf->s.changed = true;
   }

//=======================
//SetTranslationMagnitude
//=======================
void SurfaceModifier::SetTranslationMagnitude (Event *ev)
   {
   const char		*surf_name;
   netsurface_t   *svsurf;
   int            num;

   surf_name = ev->GetString(1);
   if (!(num = SurfaceExists(surf_name)))
      {
      ev->Error("SurfaceModifier::SetTranslationMagnitude", "surface name %s is not found\n", surf_name);
      }

   svsurf=&g_surfaces[num];
   svsurf->s.trans_mag = ev->GetInteger(2);
   svsurf->s.changed = true;
   }

//=================
//TranslationToggle
//=================
void SurfaceModifier::TranslationToggle (Event *ev)
   {
   const char		*surf_name;
   netsurface_t   *svsurf;
   int            num;

   surf_name = ev->GetString(1);
   if (!(num = SurfaceExists(surf_name)))
      {
      ev->Error("SurfaceModifier::TranslationToggle", "surface name %s is not found\n", surf_name);
      }

   svsurf=&g_surfaces[num];
   svsurf->s.trans_state = ~svsurf->s.trans_state;
   svsurf->s.changed = true;
   }

//=============
//TranslationOn
//=============
void SurfaceModifier::TranslationOn (Event *ev)
   {
   const char		*surf_name;
   netsurface_t   *svsurf;
   int            num;

   surf_name = ev->GetString(1);
   if (!(num = SurfaceExists(surf_name)))
      {
      ev->Error("SurfaceModifier::TranslationOn", "surface name %s is not found\n", surf_name);
      }

   svsurf=&g_surfaces[num];
   svsurf->s.trans_state = true;
   svsurf->s.changed = true;
   }

//==============
//TranslationOff
//==============
void SurfaceModifier::TranslationOff (Event *ev)
   {
   const char		*surf_name;
   netsurface_t   *svsurf;
   int            num;

   surf_name = ev->GetString(1);
   if (!(num = SurfaceExists(surf_name)))
      {
      ev->Error("SurfaceModifier::TranslationOff", "surface name %s is not found\n", surf_name);
      }

   svsurf=&g_surfaces[num];
   svsurf->s.trans_state = false;
   svsurf->s.changed = true;
   }

//=========
//SetDamage
//=========
void SurfaceModifier::SetDamage (Event *ev)
   {
   const char		*surf_name;
   int            num;
   int            damage;

   surf_name = ev->GetString(1);
   if (!(num = SurfaceExists(surf_name)))
      {
      ev->Error("SurfaceModifier::SetDamage", "surface name %s is not found\n", surf_name);
      }

   damage = ev->GetInteger(2);
   DoDamage( NULL, surf_name, damage );
   }

//=========
//DoDamage
//=========
void SurfaceModifier::DoDamage ( trace_t * trace, const char * groupname, float damage, Entity * attacker )
   {
   Surface     *surf;
   int			frame;
	int			total_damage;
   int			letter;
   int         state;
   int         currentstate;
   int         numframes;
   int         lightstyle;
   qboolean		dotrigger;
   qboolean    damaged;
   Vector		pos;
	Vector		dir;
   float       surface_damage_threshold;

   surf = GetSurface( groupname );

   if (!surf)
      {
      warning("SurfaceModifier::Damage", "surface name %s is not found\n", groupname);
      return;
      }

   frame = 0;
   if ( trace )
      {
      dir = Vector( trace->dir );
      pos = Vector( trace->endpos ) - dir;
      }

	// let the ai know
	if ( trace )
		{
      MadeBreakingSound( pos, NULL );
		}

   surface_damage_threshold = surf->Threshold();

   // get the current damage of this surface
	total_damage = surf->Damage();
   // see if it has been damaged past the threshold before
   damaged = (total_damage > surface_damage_threshold);
   // get the current state
	currentstate = surf->State();
   // get the number of frames
   numframes = surf->NumFrames();
   // get the light style
   lightstyle = surf->LightStyle();
   // add the damage and the new damage
   total_damage += damage;
   // store the damage back into the surface
   surf->SetDamage( total_damage );
   // init the state to -1 so that it gets put to 0 only if the threshold is exceeded
   state = -1;
   while (total_damage > surface_damage_threshold)
      {
      if (!damaged && trace)
         {
         damaged = true;
         TesselateModel
            (
            NULL,
            TESS_DEFAULT_MIN_SIZE,
            TESS_DEFAULT_MAX_SIZE,
            dir,
            damage,
            TESS_DEFAULT_PERCENT,
            10,
            pos
            );
         SpawnSparks
	         (
            pos,
            dir * -1.0f,
            20
            );
         }

      total_damage -= surface_damage_threshold;
      state++;
      
      if (frame < numframes)
         frame++;
      }
   if ( ( lightstyle >= 0 ) && ( state >= currentstate ) )
      {
      int length;
      int pos;
      int lastvalid;
      qboolean done;

      // get length of name
      length = strlen( groupname );
      lastvalid = 0;
      done = false;
      while ( ( lastvalid < length ) && !done )
         {
         switch( tolower( groupname[ lastvalid ] ) )
            {
            case 'o':
            case 'f':
            case 's':
            case 'q':
            case 'h':
               lastvalid++;
               break;
            default:
               done = true;
               break;
            }
         }
      dotrigger = false;

      if ( currentstate <= lastvalid )
         {
         // copy the current position to a local variable
         pos = state;
         if ( pos >= lastvalid )
            pos = lastvalid - 1;
         letter = tolower( groupname[ pos ] );
         switch( letter )
            {
            case 'o':
               gi.configstring( CS_LIGHTS + lightstyle, "a" );
               state++;
               dotrigger = true;
               break;
            case 'f':
               gi.configstring( CS_LIGHTS + lightstyle, "aanannanaanann" );
               state++;
               dotrigger = true;
               break;
            case 's':
               gi.configstring( CS_LIGHTS + lightstyle, "aaaanaaannaanaaaaan" );
               state++;
               dotrigger = true;
               break;
            case 'q':
               gi.configstring( CS_LIGHTS + lightstyle, "d" );
               state++;
               dotrigger = true;
               break;
            case 'h':
               gi.configstring( CS_LIGHTS + lightstyle, "g" );
               state++;
               dotrigger = true;
               break;
            default:
               break;
            }
         }
      surf->SetState( state );
      if ( dotrigger )
         {
         const char * t;

         t = strchr( groupname, '_' );
         if ( t )
		      {
            Event * event;
            Entity * ent;
		      int n = 0;
            t++;
            // 
            // see if this target exists
            //
		      n = G_FindTarget( n, t );
            if ( n )
               {
		         do
			         {
			         ent = G_GetEntity( n );
		         
			         event = new Event( EV_Activate );
                  event->AddEntity( attacker );
			         ent->ProcessEvent( event );

      		      n = G_FindTarget( n, t );
                  if ( !n )
				         break;
			         }
		         while ( 1 );
               }
            // 
            // otherwise treat it like a thread
            //
            else
               {
               if ( !ExecuteThread( str( t ) ) )
                  {
                  warning( "DoDamage", "%s not found as a script.", t );
                  }
               }
            }
         }
      }
   if ( frame )
      {
      netsurface_t   *svsurf;
      int            num;

      num = surf->SurfaceNumber();
      if ( num )
         {
         svsurf=&g_surfaces[num];
         if (svsurf->s.damage_frame != frame)
            {
            svsurf->s.damage_frame = frame;
            svsurf->s.changed = true;
            }
         }
      }
   }

//=========
//DamageSurface
//=========
void SurfaceModifier::DamageSurface ( trace_t * trace, float damage, Entity * attacker )
   {
   csurface_t  *csurf;

   if ( !trace )
      return;

   csurf = trace->surface;
   // Make sure there is a surface here.
	if ( 
         !csurf || 
         !( csurf->flags & (SURF_WEAK|SURF_NORMAL) )
      )
		{
		return;
		}
   DoDamage( trace, csurf->groupname, damage, attacker );
   }

//==============
//CreateSurfaces
//==============
void CreateSurfaces(csurface_t *surfinfo, int count )
   {
   int i;

   for ( i=0; i<count; i++ )
      {
      if ( !isdigit( surfinfo[ i ].groupname[ 0 ] ) || ( surfinfo[i].flags & SURF_DAMAGE ) )
         {
         if ( !surfaceManager.SurfaceExists( surfinfo[ i ].groupname ) )
            {
            surfaceManager.CreateSurface( surfinfo[ i ].groupname, &surfinfo[ i ] );
            }
         }
      }
   }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美疯狂做受xxxx富婆| 色综合视频一区二区三区高清| 天天综合网 天天综合色| 亚洲自拍偷拍av| 亚洲成人在线免费| 久久福利视频一区二区| 青青草精品视频| 国产一区二区在线观看免费| 国产精品美女视频| 国产精品久久久一本精品| 欧美日韩1234| 国产日韩精品一区二区三区在线| 国产精品久久久久影院亚瑟 | 日本一区二区三区在线不卡| 亚洲欧洲韩国日本视频 | 日本中文字幕一区| 国产成人综合网站| 欧美日韩国产经典色站一区二区三区| 国产美女娇喘av呻吟久久| 97国产精品videossex| 欧美一级片在线看| 亚洲欧美综合色| 久久er99精品| 欧美日产在线观看| 亚洲人成网站精品片在线观看| 麻豆精品在线播放| 欧美伊人久久久久久久久影院| 欧美白人最猛性xxxxx69交| 日本一区二区三区免费乱视频| 专区另类欧美日韩| 韩国精品久久久| 制服丝袜av成人在线看| 亚洲综合色丁香婷婷六月图片| 国产成人自拍网| 亚洲精品在线电影| 免费高清在线一区| 欧美高清视频一二三区| 一区二区三区中文字幕| 99国产欧美另类久久久精品| 欧美日韩国产综合久久| 亚洲在线视频免费观看| 91蜜桃网址入口| 亚洲另类在线视频| 色一区在线观看| 亚洲人吸女人奶水| 三级欧美在线一区| 欧美肥胖老妇做爰| 日韩av中文在线观看| 婷婷久久综合九色综合绿巨人| 在线观看www91| 亚洲影视在线播放| 国产精品美女一区二区三区| 国产成人在线看| 国产欧美精品日韩区二区麻豆天美| 国产一区二区在线观看免费| 国产三级久久久| 国产91对白在线观看九色| 久久五月婷婷丁香社区| 成人小视频在线| 怡红院av一区二区三区| 欧美精品丝袜久久久中文字幕| 日本欧美一区二区| 国产日韩欧美综合一区| 成人黄色电影在线| 一区二区三区四区av| 日韩一区二区三区精品视频 | 国产精品久久久久久久久搜平片 | 日本高清成人免费播放| 日韩高清不卡在线| 国产精品美女久久久久高潮| 在线亚洲高清视频| 精品在线你懂的| 亚洲欧洲av在线| xnxx国产精品| 欧美亚洲愉拍一区二区| 懂色av噜噜一区二区三区av| 亚洲成人精品影院| 国产精品黄色在线观看| 日韩久久久精品| 在线观看欧美精品| 国产成人午夜电影网| 日韩精品亚洲一区二区三区免费| 国产日产欧产精品推荐色| 欧美精品乱码久久久久久| 欧美一区二区三区公司| 99国产精品久久| 国产精品18久久久久| 七七婷婷婷婷精品国产| 亚洲一区在线播放| 亚洲精品中文在线| 中文字幕一区在线观看| 国产午夜精品一区二区三区嫩草 | 五月婷婷另类国产| 亚洲卡通欧美制服中文| 欧美少妇xxx| 色综合久久久久综合体桃花网| 风间由美一区二区av101 | 国产欧美日韩三区| 日本一区二区三区电影| 久久精品免视看| 久久蜜桃香蕉精品一区二区三区| 欧美大片免费久久精品三p| 欧美喷潮久久久xxxxx| 色丁香久综合在线久综合在线观看| 成人av网站大全| 91污在线观看| 欧美日韩国产另类一区| 日韩专区中文字幕一区二区| 一区二区三区在线视频免费| 亚洲精品日韩一| 午夜精品福利视频网站| 日本不卡在线视频| 激情丁香综合五月| 国产jizzjizz一区二区| 一区二区三区四区在线免费观看 | 精品视频一区二区不卡| 777色狠狠一区二区三区| 欧美一级片在线看| 国产女人水真多18毛片18精品视频 | 欧美撒尿777hd撒尿| 日韩一区二区免费在线电影| 久久精品一区二区三区av| 国产精品国产精品国产专区不蜜| 一色屋精品亚洲香蕉网站| 欧美一级日韩免费不卡| 国产精品免费看片| 欧美aⅴ一区二区三区视频| 国产高清亚洲一区| 欧美剧情片在线观看| 久久精品亚洲精品国产欧美| 亚洲成人精品一区| 国产一区二区91| 美女国产一区二区三区| 色网综合在线观看| 久久久五月婷婷| 三级久久三级久久久| 一本久久a久久精品亚洲| 国产视频亚洲色图| 午夜一区二区三区在线观看| 不卡的电影网站| 精品国产免费人成在线观看| 亚洲123区在线观看| 波多野结衣一区二区三区 | 91精品国产一区二区| 亚洲精选在线视频| 菠萝蜜视频在线观看一区| 精品久久久久久久一区二区蜜臀| 亚洲一卡二卡三卡四卡无卡久久| 国产酒店精品激情| 久久精品在线观看| 国内精品不卡在线| 狠狠色丁香婷婷综合久久片| 777奇米四色成人影色区| 五月综合激情婷婷六月色窝| 欧美色区777第一页| 香港成人在线视频| 91精品国产入口| 九九**精品视频免费播放| 一区二区三区免费在线观看| 成人av资源在线观看| 亚洲欧美偷拍卡通变态| 99国产欧美久久久精品| 亚洲欧美激情插 | 精品一区二区三区蜜桃| 亚洲精品在线网站| 国产精品18久久久久久vr| 国产亚洲综合av| 成人国产精品免费观看| 亚洲激情图片小说视频| 欧美日韩一区二区三区在线看| 精品中文av资源站在线观看| 日韩午夜精品视频| www.欧美.com| 日本在线不卡一区| 久久久久久免费| 欧美伊人久久久久久午夜久久久久| 日韩成人一级大片| 日韩一区中文字幕| 日韩三区在线观看| 91在线视频免费观看| 精品三级在线观看| 欧亚洲嫩模精品一区三区| 久久99精品网久久| 日韩欧美成人激情| 一本久久综合亚洲鲁鲁五月天| 美女诱惑一区二区| 亚洲精品精品亚洲| 久久久99精品免费观看不卡| 在线视频亚洲一区| 成人国产精品免费观看视频| 免费精品视频在线| 8x8x8国产精品| 欧美亚洲综合网| 91天堂素人约啪| 国产一区二区主播在线| 成人国产亚洲欧美成人综合网| 日本大胆欧美人术艺术动态| 夜夜精品视频一区二区 | 亚洲一二三区在线观看| 久久久久久久久伊人|