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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? rain.cpp

?? Blood 2全套源碼
?? CPP
字號(hào):
// ----------------------------------------------------------------------- //
//
// MODULE  : Rain.cpp
//
// PURPOSE : Rain - Implementation
//
// CREATED : 10/23/97
//
// ----------------------------------------------------------------------- //

#include "Rain.h"
#include "cpp_server_de.h"
#include "SFXMsgIds.h"
#include "generic_msg_de.h"
#include "ClientServerShared.h"

void BPrint(char*);

// Static global variables..
static char *g_szTriggerOn = "TRIGGER"; 
static char *g_szTriggerOff = "TRIGGEROFF";



BEGIN_CLASS(Rain)
	ADD_REALPROP(Density, 0.0f)
	ADD_VECTORPROP_FLAG(Dims, PF_DIMS)
	ADD_REALPROP(Lifetime, 1.0f)
	ADD_VECTORPROP(Direction)
	ADD_BOOLPROP(AddGravity, DTRUE)
	ADD_REALPROP(ParticleScale, 1.0f)
	ADD_REALPROP(Spread, 0.0f)
	ADD_BOOLPROP(Triggered, DFALSE)
	ADD_COLORPROP(Color1, 200.0f, 255.0f, 255.0f)
	ADD_COLORPROP(Color2, 40.0f, 50.0f, 50.0f)
	ADD_REALPROP(TimeLimit, 0.0f)
	ADD_REALPROP(Pulse, 0.0f)
END_CLASS_DEFAULT(Rain, CClientSFX, NULL, NULL)


// ----------------------------------------------------------------------- //
//
//	ROUTINE:	Rain::Rain
//
//	PURPOSE:	Initialize
//
// ----------------------------------------------------------------------- //

Rain::Rain() : CClientSFX()
{ 
	m_dwFlags  = 0;
	m_fDensity = 0.0f;
	VEC_INIT(m_vDims);
	m_fLifetime = 1.0f;
	m_bGravity = DTRUE;
	m_fParticleScale = 1.0f;
	m_bTriggered = DFALSE;
	VEC_INIT(m_vDirection);
	VEC_SET(m_vColor1, 200.0f, 255.0f, 255.0f);
	VEC_SET(m_vColor2, 40.0f, 50.0f, 50.0f);
	m_fTimeLimit = 0.0f;
	m_fPulse = 0.0f;
}

// ----------------------------------------------------------------------- //
// ROUTINE		: Rain::Setup
// DESCRIPTION	: 
// RETURN TYPE	: void 
// PARAMS		: DFLOAT fDensity
// PARAMS		: DVector vDims
// PARAMS		: DFLOAT fLifeTime
// PARAMS		: DVector vDir
// PARAMS		: DBOOL bGravity
// PARAMS		: DFLOAT fScale
// PARAMS		: DFLOAT fSpread
// PARAMS		: DVector vColor1
// PARAMS		: DVector vColor2
// ----------------------------------------------------------------------- //

void Rain::Setup(DFLOAT fDensity, DVector vDims, DFLOAT fLifeTime, DVector vDir, DBOOL bGravity, DFLOAT fScale, 
				 DFLOAT fSpread, DVector vColor1, DVector vColor2, DFLOAT fTimeLimit, DFLOAT fPulse)
{
	m_fDensity = fDensity;
	VEC_COPY(m_vDims,vDims);
	m_fLifetime = fLifeTime;
	m_bGravity = bGravity;
	m_fParticleScale = fScale;
	m_fSpread = fSpread;
	VEC_COPY(m_vDirection,vDir);
	VEC_COPY(m_vColor1,vColor1);
	VEC_COPY(m_vColor2,vColor2);
	m_fTimeLimit = fTimeLimit;
	m_fPulse = fPulse;

	SendEffectMessage();

	return;
}

// ----------------------------------------------------------------------- //
//
//	ROUTINE:	Rain::EngineMessageFn
//
//	PURPOSE:	Handle engine messages
//
// ----------------------------------------------------------------------- //

DDWORD Rain::EngineMessageFn(DDWORD messageID, void *pData, DFLOAT fData)
{
	switch(messageID)
	{
		case MID_PRECREATE:
		{
			if (fData == PRECREATE_WORLDFILE)
				ReadProp((ObjectCreateStruct *)pData);
			break;
		}

		case MID_INITIALUPDATE:
		{
			if (fData != INITIALUPDATE_SAVEGAME)
				InitialUpdate((DVector *)pData);
			break;
		}

		case MID_SAVEOBJECT:
			Save((HMESSAGEWRITE)pData, (DDWORD)fData);
			break;

		case MID_LOADOBJECT:
			Load((HMESSAGEREAD)pData, (DDWORD)fData);
			break;

		//SCHLEGZ 5/3/98 11:29:45 PM: if parent is gone, remove this
		case MID_PARENTATTACHMENTREMOVED:
			GetServerDE()->RemoveObject(m_hObject);
			break;

		default : break;
	}

	return CClientSFX::EngineMessageFn(messageID, pData, fData);
}


// --------------------------------------------------------------------------- //
//
//	ROUTINE:	Rain::ObjectMessageFn()
//
//	PURPOSE:	Handler for server object messages.
//
// --------------------------------------------------------------------------- //

DDWORD Rain::ObjectMessageFn(HOBJECT hSender, DDWORD messageID, HMESSAGEREAD hRead)
{
	CServerDE* pServerDE = GetServerDE();
	switch (messageID)
	{
		case MID_TRIGGER:
			HSTRING hMsg = pServerDE->ReadFromMessageHString(hRead);
			TriggerMsg(hSender, hMsg);
			pServerDE->FreeString(hMsg);
			break;
	}
	
	return CClientSFX::ObjectMessageFn(hSender, messageID, hRead);
}


// ----------------------------------------------------------------------- //
//
//	ROUTINE:	Rain::ReadProp
//
//	PURPOSE:	Set property value
//
// ----------------------------------------------------------------------- //

DBOOL Rain::ReadProp(ObjectCreateStruct *pStruct)
{
	CServerDE* pServerDE = GetServerDE();
	if (!pServerDE || !pStruct) return DFALSE;

	pServerDE->GetPropVector("Dims", &m_vDims);
	pServerDE->GetPropReal("Density", &m_fDensity);
	pServerDE->GetPropReal("Lifetime", &m_fLifetime);
	pServerDE->GetPropVector("Direction", &m_vDirection);
	pServerDE->GetPropBool("AddGravity", &m_bGravity);
	pServerDE->GetPropReal("ParticleScale", &m_fParticleScale);
	pServerDE->GetPropReal("Spread", &m_fSpread);
	pServerDE->GetPropBool("Triggered", &m_bTriggered);
	pServerDE->GetPropVector("Color1", &m_vColor1);
	pServerDE->GetPropVector("Color2", &m_vColor2);
	pServerDE->GetPropReal("TimeLimit", &m_fTimeLimit);
	pServerDE->GetPropReal("Pulse", &m_fPulse);

	return DTRUE;
}


// ----------------------------------------------------------------------- //
//
//	ROUTINE:	Rain::InitialUpdate
//
//	PURPOSE:	Handle initial Update
//
// ----------------------------------------------------------------------- //

void Rain::InitialUpdate(DVector *pMovement)
{
	CServerDE* pServerDE = GetServerDE();
	if (!pServerDE) return;

	DVector vPos;
	pServerDE->GetObjectPos(m_hObject, &vPos);

	// Mark this object as savable
	DDWORD dwFlags = pServerDE->GetObjectUserFlags(m_hObject);
	dwFlags |= USRFLG_SAVEABLE;
	pServerDE->SetObjectUserFlags(m_hObject, dwFlags);

	// Tell the clients about the Rain
	if (!m_bTriggered)
		SendEffectMessage();
}


// ----------------------------------------------------------------------- //
//
//	ROUTINE:	Rain::SendEffectMessage
//
//	PURPOSE:	Sends a message to the client to start a rain effect
//
// ----------------------------------------------------------------------- //

void Rain::SendEffectMessage()
{
	CServerDE* pServerDE = GetServerDE();
	if (!pServerDE) return;

	HMESSAGEWRITE hMessage = pServerDE->StartSpecialEffectMessage(this);
	pServerDE->WriteToMessageByte(hMessage, SFX_RAIN_ID);
/*
	if(m_fTimeLimit)	//SCHLEGZ 5/3/98 11:36:00 PM: remove object if the server object disappears (HACK!!)
		pServerDE->WriteToMessageByte(hMessage, DFALSE);
	else
//pServerDE->WriteToMessageByte(hMessage, DTRUE);
*/
	pServerDE->WriteToMessageFloat(hMessage, (DFLOAT)m_dwFlags);
	pServerDE->WriteToMessageFloat(hMessage, m_fDensity);
	pServerDE->WriteToMessageFloat(hMessage, m_fLifetime);
	pServerDE->WriteToMessageByte(hMessage, (DBYTE)m_bGravity);
	pServerDE->WriteToMessageFloat(hMessage, m_fParticleScale);
	pServerDE->WriteToMessageFloat(hMessage, m_fSpread);
	pServerDE->WriteToMessageVector(hMessage, &m_vDims);
	pServerDE->WriteToMessageVector(hMessage, &m_vDirection);
	pServerDE->WriteToMessageVector(hMessage, &m_vColor1);
	pServerDE->WriteToMessageVector(hMessage, &m_vColor2);
	pServerDE->WriteToMessageFloat(hMessage, m_fTimeLimit);
	pServerDE->WriteToMessageFloat(hMessage, m_fPulse);
	pServerDE->EndMessage(hMessage);
}


// --------------------------------------------------------------------------- //
//
//	ROUTINE:	Rain::TriggerMsg()
//
//	PURPOSE:	Handler for rain trigger messages.
//
// --------------------------------------------------------------------------- //

void Rain::TriggerMsg(HOBJECT hSender, HSTRING hMsg)
{
	CServerDE* pServerDE = GetServerDE();
	HSTRING hstr;

	hstr = pServerDE->CreateString(g_szTriggerOn);
	if (pServerDE->CompareStringsUpper(hMsg, hstr))
		SendEffectMessage();
	pServerDE->FreeString(hstr);
}

	

// ----------------------------------------------------------------------- //
//
//	ROUTINE:	Rain::Save
//
//	PURPOSE:	Save the object
//
// ----------------------------------------------------------------------- //

void Rain::Save(HMESSAGEWRITE hWrite, DDWORD dwSaveFlags)
{
	CServerDE* pServerDE = GetServerDE();
	if (!pServerDE || !hWrite) return;

	pServerDE->WriteToMessageDWord(hWrite, m_dwFlags);
	pServerDE->WriteToMessageFloat(hWrite, m_fDensity);
	pServerDE->WriteToMessageFloat(hWrite, m_fLifetime);
	pServerDE->WriteToMessageByte(hWrite, m_bGravity);
	pServerDE->WriteToMessageFloat(hWrite, m_fParticleScale);
	pServerDE->WriteToMessageFloat(hWrite, m_fSpread);
	pServerDE->WriteToMessageByte(hWrite, m_bTriggered);
	pServerDE->WriteToMessageVector(hWrite, &m_vDims);
	pServerDE->WriteToMessageVector(hWrite, &m_vDirection);
	pServerDE->WriteToMessageVector(hWrite, &m_vColor1);
	pServerDE->WriteToMessageVector(hWrite, &m_vColor2);
	pServerDE->WriteToMessageFloat(hWrite, m_fTimeLimit);
	pServerDE->WriteToMessageFloat(hWrite, m_fPulse);
}


// ----------------------------------------------------------------------- //
//
//	ROUTINE:	Rain::Load
//
//	PURPOSE:	Load the object
//
// ----------------------------------------------------------------------- //

void Rain::Load(HMESSAGEREAD hRead, DDWORD dwLoadFlags)
{
	CServerDE* pServerDE = GetServerDE();
	if (!pServerDE || !hRead) return;

	m_dwFlags		= pServerDE->ReadFromMessageDWord(hRead);
	m_fDensity		= pServerDE->ReadFromMessageFloat(hRead);
	m_fLifetime		= pServerDE->ReadFromMessageFloat(hRead);
	m_bGravity		= pServerDE->ReadFromMessageByte(hRead);
	m_fParticleScale= pServerDE->ReadFromMessageFloat(hRead);
	m_fSpread		= pServerDE->ReadFromMessageFloat(hRead);
	m_bTriggered	= pServerDE->ReadFromMessageByte(hRead);
	pServerDE->ReadFromMessageVector(hRead, &m_vDims);
	pServerDE->ReadFromMessageVector(hRead, &m_vDirection);
	pServerDE->ReadFromMessageVector(hRead, &m_vColor1);
	pServerDE->ReadFromMessageVector(hRead, &m_vColor2);
	m_fTimeLimit	= pServerDE->ReadFromMessageFloat(hRead);	
	m_fPulse		= pServerDE->ReadFromMessageFloat(hRead);	

	// Tell the clients about the Rain
	if (!m_bTriggered)
		SendEffectMessage();
}



?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品国产精品亚洲综合| 蜜桃视频一区二区三区 | 成人国产一区二区三区精品| 久久9热精品视频| 久久99久久99精品免视看婷婷| 日本sm残虐另类| 青青草成人在线观看| 蜜桃av一区二区三区电影| 琪琪久久久久日韩精品| 日本欧美韩国一区三区| 蜜桃视频在线一区| 国产91丝袜在线观看| 成人一级黄色片| 在线中文字幕不卡| 91麻豆精品国产自产在线 | 激情综合网天天干| 国产高清一区日本| 成人黄色软件下载| 欧美日韩亚洲国产综合| 91精品婷婷国产综合久久竹菊| 精品少妇一区二区三区免费观看| 久久综合av免费| 亚洲免费在线视频| 男女男精品视频网| 成人黄色软件下载| 欧美精品久久一区二区三区| 精品成人私密视频| 亚洲视频在线观看三级| 日欧美一区二区| 国产成人啪午夜精品网站男同| 99国产精品视频免费观看| 欧美亚洲综合网| 日韩欧美专区在线| 成人免费在线观看入口| 日韩电影在线观看电影| 国产精品99久久久久久久女警| 色婷婷国产精品| 久久综合资源网| 亚洲夂夂婷婷色拍ww47| 国产精品一级黄| 91精品国模一区二区三区| 国产精品美女一区二区三区| 天堂久久一区二区三区| 成人aaaa免费全部观看| 精品久久久网站| 首页国产欧美久久| 99免费精品视频| 久久综合久色欧美综合狠狠| 亚洲国产一区二区在线播放| 丰满少妇在线播放bd日韩电影| 欧美福利视频导航| 中文字幕视频一区| 国内外成人在线视频| 欧美色偷偷大香| 成人欧美一区二区三区小说| 激情综合一区二区三区| 欧美高清一级片在线| 夜夜嗨av一区二区三区中文字幕 | 成人精品鲁一区一区二区| 这里只有精品免费| 亚洲电影一区二区| 99精品黄色片免费大全| 国产精品丝袜91| 国产精品一二一区| 精品处破学生在线二十三| 日韩av电影免费观看高清完整版 | www.爱久久.com| 久久亚区不卡日本| 久久精品国产999大香线蕉| 欧美精三区欧美精三区| 亚洲国产一区二区在线播放| 日本高清不卡aⅴ免费网站| 国产精品电影一区二区| 成人激情黄色小说| 国产精品麻豆久久久| 成人免费视频一区二区| 中文一区二区在线观看| 国产91在线|亚洲| 欧美国产日韩精品免费观看| 成人免费看片app下载| 国产精品视频你懂的| 成人免费毛片嘿嘿连载视频| 日韩久久一区二区| 欧洲av一区二区嗯嗯嗯啊| 性做久久久久久久久| 日韩视频一区二区三区在线播放| 麻豆精品蜜桃视频网站| 国产欧美一区二区精品婷婷| 91一区二区三区在线观看| 亚洲激情中文1区| 欧美男同性恋视频网站| 久久国产人妖系列| 国产精品色眯眯| 欧洲一区在线观看| 日韩av中文字幕一区二区| 久久综合久久综合久久综合| 岛国一区二区三区| 亚洲国产日产av| 欧美va天堂va视频va在线| 国产精品羞羞答答xxdd | 色婷婷久久综合| 日日摸夜夜添夜夜添国产精品 | 亚洲电影中文字幕在线观看| 777久久久精品| 风间由美性色一区二区三区| 亚洲午夜免费视频| 国产亚洲va综合人人澡精品| 91小视频免费观看| 久草精品在线观看| 一级精品视频在线观看宜春院| 日韩一级视频免费观看在线| 国产91精品在线观看| 亚洲精品成人悠悠色影视| 日韩视频在线永久播放| 色婷婷综合激情| 国产成a人亚洲精品| 青娱乐精品视频在线| 17c精品麻豆一区二区免费| 7878成人国产在线观看| 色综合夜色一区| 国产91丝袜在线播放0| 另类中文字幕网| 一级中文字幕一区二区| 国产精品久久久久久久久免费相片| 欧美日韩精品一区二区三区四区 | 欧美精品久久一区二区三区| 国产成人亚洲综合a∨婷婷| 香港成人在线视频| 中文字幕在线播放不卡一区| 欧美成人欧美edvon| 欧美精品日韩综合在线| 色综合av在线| 成人综合在线观看| 国产尤物一区二区| 美女视频网站黄色亚洲| 婷婷综合久久一区二区三区| 国产精品美女一区二区三区| 精品乱码亚洲一区二区不卡| 欧美日韩高清不卡| 欧美午夜一区二区| 日本二三区不卡| 色综合欧美在线| 成人av午夜电影| 成人动漫在线一区| 成人精品高清在线| 国产成人鲁色资源国产91色综| 激情五月婷婷综合| 久久狠狠亚洲综合| 美国十次了思思久久精品导航| 日本成人在线不卡视频| 视频精品一区二区| 亚洲超丰满肉感bbw| 午夜欧美视频在线观看 | 丰满放荡岳乱妇91ww| 国产一区二区在线看| 狠狠网亚洲精品| 国产一区二区三区视频在线播放 | 中文字幕一区二区在线播放| 国产精品视频第一区| 国产精品丝袜黑色高跟| 综合分类小说区另类春色亚洲小说欧美| 国产精品女主播av| 综合色中文字幕| 亚洲国产aⅴ成人精品无吗| 亚洲一区二区三区中文字幕| 亚洲愉拍自拍另类高清精品| 午夜婷婷国产麻豆精品| 精品综合久久久久久8888| 国产精品影视在线| eeuss鲁一区二区三区| 一本到一区二区三区| 欧美精品自拍偷拍| 久久久久免费观看| 亚洲精品久久久蜜桃| 日韩精品一卡二卡三卡四卡无卡| 毛片一区二区三区| 国产成人精品一区二| 91福利精品视频| 精品国产一区二区三区久久影院| 国产三级精品在线| 一区二区三区美女| 久久爱www久久做| 91免费国产在线观看| 日韩一区二区三区视频在线| 久久久精品日韩欧美| 亚洲欧美电影院| 极品尤物av久久免费看| 日本精品一级二级| 久久久精品欧美丰满| 亚洲精品视频免费看| 蜜桃视频第一区免费观看| av综合在线播放| 日韩欧美三级在线| 亚洲日本青草视频在线怡红院| 青青草精品视频| 色综合激情五月| 欧美国产激情二区三区| 奇米精品一区二区三区在线观看| 成人app网站| 久久久久高清精品|