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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? light.cpp

?? this keik game source
?? CPP
字號:
//-----------------------------------------------------------------------------
//
//  $Logfile:: /Quake 2 Engine/Sin/code/game/light.cpp                        $
// $Revision:: 21                                                             $
//   $Author:: Aldie                                                          $
//     $Date:: 10/09/98 8:58p                                                 $
//
// Copyright (C) 1997 by Ritual Entertainment, Inc.
// All rights reserved.
//
// This source is may not be distributed and/or modified without
// expressly written permission by Ritual Entertainment, Inc.
//
// $Log:: /Quake 2 Engine/Sin/code/game/light.cpp                             $
// 
// 21    10/09/98 8:58p Aldie
// Lightstyle on lensflare from Lights
// 
// 20    9/22/98 5:19p Markd
// Fixed lights not removing themselves
// 
// 19    9/22/98 4:23p Markd
// Fixed some targetname stuff for lights, doors and scriptobjects
// 
// 18    9/14/98 11:20a Jimdose
// Made Light process EV_Remove so that we have more edicts at startup
// 
// 17    8/30/98 7:05p Markd
// lights don't respond to Touch.
// 
// 16    8/29/98 7:46p Markd
// Don't set a light style if style is < 32
// 
// 15    7/09/98 12:05a Jimdose
// made constructor post remove event instead of processing it
// 
// 14    6/25/98 8:47p Markd
// Added keyed items for Triggers, Rewrote Item class, rewrote every pickup
// method
// 
// 13    6/17/98 7:18p Markd
// Added on_style and off_style support
// 
// 12    5/24/98 8:46p Jimdose
// Made a lot of functions more str-friendly.
// Got rid of a lot of char * based strings
// Cleaned up get spawn arg functions and sound functions
// sound functions now use consistant syntax
// 
// 11    4/04/98 6:05p Jimdose
// Made response from EV_Trigger_ActivateTargets to EV_Trigger_Effect
// 
// 10    3/27/98 9:47p Jimdose
// Fixed light so that it reacts to activate targets events
// 
// 9     3/25/98 3:55p Jimdose
// fixed bug where lightramp wasn't responding to any events.
// 
// 8     3/23/98 1:31p Jimdose
// Revamped event and command system
// 
// 7     3/02/98 8:49p Jimdose
// Changed the classid parameter of CLASS_DECLARATION to a quoted string so
// that you could have a NULL classid.
// 
// 6     3/02/98 5:41p Jimdose
// Created file
// 
// DESCRIPTION:
// Classes for creating and controlling lights.
// 

#include "g_local.h"
#include "entity.h"
#include "trigger.h"
#include "light.h"
#include "scriptmaster.h"

CLASS_DECLARATION( Trigger, BaseLight, NULL );

Event EV_Light_TurnOn( "turnOn" );
Event EV_Light_TurnOff( "turnOff" );
Event EV_Light_SetLightStyle( "lightstyle" );

ResponseDef BaseLight::Responses[] =
	{
	   { &EV_Light_TurnOn,			( Response )Light::TurnOn },
	   { &EV_Light_TurnOff,			( Response )Light::TurnOff },
	   { &EV_Light_SetLightStyle,	( Response )Light::EventSetLightStyle },
		{ &EV_Touch,	NULL },
		{ NULL, NULL }
	};

BaseLight::BaseLight()
	{
	hideModel();
	edict->svflags |= SVF_NOCLIENT;
	setSolidType( SOLID_NOT );
	style = G_GetIntArg( "style" );
	on_style = G_GetStringArg( "onstyle", "m" );
	off_style = G_GetStringArg( "offstyle", "a" );
	respondto = TRIGGER_PLAYERS;
	}

int BaseLight::GetStyle
   (
   void
   )

   {
   return style;
   }

void BaseLight::SetLightStyle
	(
	const char *stylestring
	)

	{
   if ( style < 32 )
      return;
	lightstyle = stylestring;
	gi.configstring( CS_LIGHTS + style, lightstyle.c_str() );
	}

void BaseLight::EventSetLightStyle
	(
	Event *ev
	)

	{
	SetLightStyle( ev->GetString( 1 ) );
	}

void BaseLight::TurnOn
	(
	Event *ev
	)

	{
	SetLightStyle( on_style.c_str() );
	}

void BaseLight::TurnOff
	(
	Event *ev
	)

	{
	SetLightStyle( off_style.c_str() );
	}

/*****************************************************************************/
/*SINED light_ramp (0 .5 .8) (-8 -8 -8) (8 8 8) TOGGLE

Non-displayed light that ramps its intensity from one level to another when trigger.

time			How many seconds the ramping will take (default 1.0)
startlevel	Value between 0 and 2.0 (default 0)
endlevel		Value between 0 and 2.0 (default 1.0)
"key"       The item needed to activate this. (default nothing)

/*****************************************************************************/

CLASS_DECLARATION( BaseLight, LightRamp, "light_ramp" );

Event EV_RampLight( "ramplight" );

ResponseDef LightRamp::Responses[] =
	{
		{ &EV_Trigger_Effect,			( Response )LightRamp::StartRamp },
		{ &EV_RampLight,					( Response )LightRamp::RampLight },
		{ NULL, NULL }
	};

void LightRamp::RampLight
	(
	Event *ev
	)
	
	{
	char st[ 2 ];

	currentlevel += rate;
	if ( currentlevel >= maxlevel )
		{
		if ( !( spawnflags & 1 ) )
			{
			rate = 0;
			}
		currentlevel = maxlevel;
		}
	else if ( currentlevel <= minlevel )
		{
		if ( !( spawnflags & 1 ) )
			{
			rate = 0;
			}
		currentlevel = minlevel;
		}
	else
		{
		PostEvent( EV_RampLight, FRAMETIME );
		}

	st[ 0 ] = 'L';
	st[ 1 ] = 'a' + ( int )( currentlevel * 12.5 );
	st[ 1 ] = min( 'z', st[ 1 ] );
	st[ 1 ] = max( 'a', st[ 1 ] );
	st[ 2 ] = 0;

	SetLightStyle( st );
	}

void LightRamp::StartRamp
	(
	Event *ev
	)
	
	{
	if ( rate )
		{
		rate = -rate;
		CancelEventsOfType( EV_RampLight );
		ProcessEvent( EV_RampLight );
		}
	
	ActivateTargets( ev );
	}

LightRamp::LightRamp()
	{
	float		startlevel;
	float		endlevel;
	float		time;
	char		st[ 2 ];

	startlevel	= G_GetFloatArg( "startlevel", 1.0 );
	endlevel		= G_GetFloatArg( "endlevel", 0 );
	time			= G_GetFloatArg( "time", 1.0 );

	minlevel = min( startlevel, endlevel );
	maxlevel = max( startlevel, endlevel );

	minlevel = min( 2.0, minlevel );
	minlevel = max( 0, minlevel );
	
	maxlevel = min( 2.0, maxlevel );
	maxlevel = max( 0, maxlevel );

	rate		= FRAMETIME * ( maxlevel - minlevel ) / time;

	currentlevel = startlevel;

	st[ 0 ] = 'a' + ( int )( currentlevel * 12.5 );
	st[ 0 ] = min( 'z', st[ 0 ] );
	st[ 0 ] = max( 'a', st[ 0 ] );
	st[ 1 ] = 0;

	SetLightStyle( st );
	}

/*****************************************************************************/
/*SINED trigger_lightramp (0 1 0) (-8 -8 -8) (8 8 8) TOGGLE

Ramps light values on surface based light sources.
Set style to the identifier contained in groupname in the surfaces to control.

time			How many seconds the ramping will take (default 1.0)
startlevel	Value between 0 and 2.0 (default 0)
endlevel		Value between 0 and 2.0 (default 1.0)
"key"       The item needed to activate this. (default nothing)

Default style is 0.

/*****************************************************************************/

CLASS_DECLARATION( LightRamp, TriggerLightRamp, "trigger_lightramp" );

ResponseDef TriggerLightRamp::Responses[] =
	{
		{ NULL, NULL }
	};

/*****************************************************************************/
/*SINED light (0 1 0) (-8 -8 -8) (8 8 8) START_OFF

Non-displayed light.

Default light value is 300.
Default style is 0.

If targeted, will toggle between on and off.
Default _cone value is 10 (used to set size of light for spotlights)
"on_style" light style to set to when "on" (default is "m")
"off_style" light style to set to when "off" (default is "a")
"key"      The item needed to activate this. (default nothing)

/*****************************************************************************/

#define START_OFF	1

CLASS_DECLARATION( BaseLight, Light, "light" );

ResponseDef Light::Responses[] =
	{
		{ &EV_Trigger_Effect,		( Response )Light::ToggleLight },
		{ NULL, NULL }
	};

void Light::ToggleLight
	(
	Event *ev
	)

	{
	if ( style >= 32 )
		{
		if ( spawnflags & START_OFF )
			{
			ProcessEvent( EV_Light_TurnOn );
			spawnflags &= ~START_OFF;
			}
		else
			{
			ProcessEvent( EV_Light_TurnOff );
			spawnflags |= START_OFF;
			}
		}

	ActivateTargets( ev );
	}

Light::Light()
	{
   const char * tname;

   tname = TargetName();
	if ( !tname || !tname[ 0 ] )
		{
   	const char	*classname;

   	classname = G_GetSpawnArg( "classname" );
      if ( classname && !strcmp( classname, "light" ) )
         {
   		ProcessEvent( EV_Remove );
         }
		return;
		}

	if ( style >= 32 )
		{
		if ( spawnflags & START_OFF )
			{
			SetLightStyle( off_style.c_str() );
			}
		else
			{
			SetLightStyle( on_style.c_str() );
			}
		}
	}

/*****************************************************************************/
/*SINED trigger_SetLightStyle (0 1 0) (-8 -8 -8) (8 8 8) START_OFF

Used for controlling surface based light sources.

Set style to the identifier contained in groupname in the surfaces to control.

Default style is 0.

If targeted, will toggle between on and off.

"on_style" light style to set to when "on" (default is "m")
"off_style" light style to set to when "off" (default is "a")
"key"      The item needed to activate this. (default nothing)

/*****************************************************************************/

CLASS_DECLARATION( Light, TriggerLightStyle, "trigger_SetLightStyle" );

ResponseDef TriggerLightStyle::Responses[] =
	{
		{ NULL, NULL }
	};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜久久久久中文字幕久| 风间由美性色一区二区三区| 色拍拍在线精品视频8848| 欧美国产一区在线| 粉嫩av一区二区三区| 中文无字幕一区二区三区| 国产麻豆精品久久一二三| 久久一留热品黄| 成人免费观看视频| 一区二区三区四区不卡视频| 欧美三级在线看| 精品中文字幕一区二区| 国产亚洲欧美日韩在线一区| 99久久99久久精品国产片果冻| 玉米视频成人免费看| 欧美日本在线播放| 人禽交欧美网站| 久久久综合网站| 91色porny蝌蚪| 五月激情丁香一区二区三区| 欧美大片免费久久精品三p| 国产成人精品亚洲777人妖| 亚洲色图欧美激情| 69av一区二区三区| 成人一区二区视频| 亚洲va在线va天堂| 久久精品网站免费观看| 色偷偷成人一区二区三区91| 热久久久久久久| 国产精品你懂的在线欣赏| 欧美中文字幕不卡| 国内精品久久久久影院色| ...中文天堂在线一区| 欧美一区二区在线看| 成人成人成人在线视频| 日日噜噜夜夜狠狠视频欧美人| 久久精品一二三| 欧美色视频一区| 国产69精品久久久久777| 亚洲综合精品久久| 国产欧美日韩精品一区| 欧美三级在线播放| 本田岬高潮一区二区三区| 爽爽淫人综合网网站| 国产精品伦一区| 日韩三级av在线播放| 色偷偷88欧美精品久久久| 麻豆91免费观看| 一区二区三区在线观看网站| 久久久精品国产免费观看同学| 欧美亚洲图片小说| 国v精品久久久网| 老司机免费视频一区二区| 亚洲精品免费电影| 亚洲国产岛国毛片在线| 欧美成人午夜电影| 欧美手机在线视频| 色综合久久久久综合| 国产精品99久久久久久久vr| 日韩精品成人一区二区三区| 一区二区三区欧美| 国产精品乱码一区二区三区软件 | aaa欧美日韩| 久久se这里有精品| 日韩二区三区在线观看| 五月婷婷激情综合| 亚洲综合免费观看高清在线观看| 国产精品久久久久影院亚瑟| 国产欧美一区二区三区鸳鸯浴 | 国产女同互慰高潮91漫画| 精品毛片乱码1区2区3区| 6080日韩午夜伦伦午夜伦| 一本到三区不卡视频| 国产**成人网毛片九色 | 国产91综合一区在线观看| 亚洲成av人在线观看| 日本一区二区视频在线观看| 欧美伊人久久久久久久久影院 | 日韩视频中午一区| 欧美喷潮久久久xxxxx| 一本久久精品一区二区| 国产精品亚洲一区二区三区在线| 久草精品在线观看| 秋霞电影网一区二区| 亚洲影视资源网| 一区二区三区四区在线播放 | 激情久久久久久久久久久久久久久久| 亚洲自拍都市欧美小说| 亚洲天堂精品在线观看| 国产精品热久久久久夜色精品三区 | 亚洲va韩国va欧美va精品| 伊人开心综合网| 亚洲欧美一区二区不卡| 亚洲人精品午夜| 中文字幕一区二区三区在线不卡| 久久无码av三级| 精品国产1区二区| 亚洲精品在线电影| 精品国产123| 久久免费看少妇高潮| 欧美激情在线观看视频免费| 久久久久久黄色| 国产午夜三级一区二区三| 欧美午夜精品久久久久久孕妇 | 亚洲自拍偷拍av| 亚洲一二三级电影| 亚洲精品精品亚洲| 日韩av成人高清| 美脚の诱脚舐め脚责91| 黄色精品一二区| 成人午夜短视频| 91丨九色porny丨蝌蚪| 91激情在线视频| 欧美日韩电影在线播放| 日韩欧美三级在线| 久久综合精品国产一区二区三区| 欧美国产成人精品| 国产网站一区二区| 亚洲福利国产精品| 奇米在线7777在线精品| 激情五月激情综合网| 成人美女在线视频| 91免费观看视频在线| 91污在线观看| 91超碰这里只有精品国产| 欧美精品一区二区蜜臀亚洲| 欧美国产精品劲爆| 亚洲国产精品一区二区久久| 日韩高清一区在线| 久久国产精品色| 欧美视频精品在线| 久久这里只有精品视频网| 国产精品国产精品国产专区不蜜| 亚洲国产欧美在线| 九色综合狠狠综合久久| 成人精品国产免费网站| 欧美三级日韩三级| 日韩一区和二区| 一区二区三区小说| 国产一区二区三区黄视频 | 精品嫩草影院久久| 亚洲精品免费视频| 久久9热精品视频| 91一区一区三区| 欧美一区二区三区白人| 国产精品免费av| 免费一区二区视频| 91黄色免费观看| 日韩欧美一级精品久久| 亚洲婷婷综合久久一本伊一区| 日本亚洲欧美天堂免费| 成人av电影在线| 久久色成人在线| 三级影片在线观看欧美日韩一区二区| 国产一区二区福利视频| 日韩精品资源二区在线| 亚洲欧美国产毛片在线| gogogo免费视频观看亚洲一| 欧美成人在线直播| 日韩成人一级大片| 狠狠色丁香九九婷婷综合五月| 91精品久久久久久蜜臀| 亚洲美女精品一区| 国产成人aaa| 欧美电影精品一区二区| 亚洲激情五月婷婷| 国产精品一区二区x88av| 日韩一区二区三区免费观看| 一区二区三区四区高清精品免费观看| 国产精品系列在线播放| 精品国产乱码久久| 麻豆久久久久久| 欧美一级黄色片| 日韩制服丝袜av| 精品视频一区二区三区免费| 亚洲欧美精品午睡沙发| 国产69精品久久久久毛片| 国产精品视频一区二区三区不卡| 久88久久88久久久| 欧美日韩一二三| 一区二区三区中文在线观看| av一区二区不卡| 中文一区在线播放| 成人性生交大片免费| 国产欧美精品在线观看| 精品亚洲aⅴ乱码一区二区三区| 欧美精品一区二区三区很污很色的 | 精品一区二区三区在线观看国产 | 日韩一级二级三级精品视频| 亚洲国产毛片aaaaa无费看 | 亚洲美女屁股眼交3| 91免费看`日韩一区二区| 国产精品久久久久9999吃药| 成人一区二区三区| 亚洲精品一二三| 欧美在线一区二区| 婷婷中文字幕一区三区| 3d动漫精品啪啪| 久久99精品久久久久| 久久先锋影音av鲁色资源网|