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

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

?? effect.cpp

?? 機(jī)甲指揮官2源代碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include "gosFXHeaders.hpp"

//==========================================================================//
// File:	 gosFX_Effect.cpp												//
// Contents: Base gosFX::Effect Component									//
//---------------------------------------------------------------------------//
// Copyright (C) Microsoft Corporation. All rights reserved.                 //
//===========================================================================//

//############################################################################
//########################  EffectSpecification  #############################
//############################################################################

//------------------------------------------------------------------------------
//
gosFX::Event::Event(const Event& event):
	Plug(DefaultData)
{
	Check_Pointer(this);
	Verify(gos_GetCurrentHeap() == Heap);

	m_time = event.m_time;
	m_flags = event.m_flags;
	m_effectID = event.m_effectID;
}

//------------------------------------------------------------------------------
//
gosFX::Event::Event(
	Stuff::MemoryStream *stream,
	int gfx_version
):
	Plug(DefaultData)
{
	Check_Pointer(this);
	Check_Object(stream);
	Verify(gos_GetCurrentHeap() == Heap);

	*stream >> m_time >> m_flags >> m_effectID >> m_localToParent;
}

//------------------------------------------------------------------------------
//
gosFX::Event*
	gosFX::Event::Make(
		Stuff::MemoryStream *stream,
		int gfx_version
	)
{
	Check_Object(stream);

	gos_PushCurrentHeap(Heap);
	Event *event = new Event(stream, gfx_version);
	gos_PopCurrentHeap();

	return event;
}

//------------------------------------------------------------------------------
//
void
	gosFX::Event::Save(Stuff::MemoryStream *stream)
{
	Check_Object(this);
	*stream << m_time << m_flags << m_effectID << m_localToParent;
}

//############################################################################
//########################  EffectSpecification  #############################
//############################################################################

//------------------------------------------------------------------------------
//
gosFX::Effect__Specification::Effect__Specification(
	Stuff::RegisteredClass::ClassID class_id,
	Stuff::MemoryStream *stream,
	int gfx_version
):
	m_events(NULL)
{
	Check_Pointer(this);
	Check_Object(stream);
	Verify(gos_GetCurrentHeap() == Heap);

	if (gfx_version < 9)
	{
		STOP(("This version of gosFX is no longer supported"));
		return;
	}

	//
	//--------------
	// Read the name
	//--------------
	//
	m_class = class_id;
	*stream >> m_name;

	//
	//--------------------------------------------------------------------
	// Read the events.  If we are using an array, no events will be saved
	//--------------------------------------------------------------------
	//
	unsigned event_count;
	*stream >> event_count;
	while (event_count-- > 0)
	{
		Event *event = Event::Make(stream, gfx_version);
		Register_Object(event);
		m_events.Add(event);
	}

	//
	//--------------------------------------------------------
	// Load the curves, variances, and MLRState if appropriate
	//--------------------------------------------------------
	//
	m_lifeSpan.Load(stream, gfx_version);
	m_minimumChildSeed.Load(stream, gfx_version);
	m_maximumChildSeed.Load(stream, gfx_version);
	m_state.Load(stream, MidLevelRenderer::ReadMLRVersion(stream));
	if (gfx_version < 14)
	{
		m_state.SetRenderPermissionMask(
			m_state.GetRenderPermissionMask() | MidLevelRenderer::MLRState::TextureMask
		);
	}
	if (
		m_state.GetAlphaMode() != MidLevelRenderer::MLRState::OneZeroMode
		&& m_state.GetPriority() < MidLevelRenderer::MLRState::AlphaPriority
	)
		m_state.SetPriority(MidLevelRenderer::MLRState::AlphaPriority);
}

//------------------------------------------------------------------------------
//
gosFX::Effect__Specification::Effect__Specification(
	Stuff::RegisteredClass::ClassID class_id
):
	m_events(NULL)
{
	Check_Pointer(this);
	Verify(gos_GetCurrentHeap() == Heap);
	m_class = class_id;
}

//------------------------------------------------------------------------------
//
gosFX::Effect__Specification::~Effect__Specification()
{
	Check_Pointer(this);

	Stuff::ChainIteratorOf<Event*> events(&m_events);
	events.DeletePlugs();
}

//------------------------------------------------------------------------------
//
gosFX::Effect__Specification*
	gosFX::Effect__Specification::Make(
		Stuff::MemoryStream *stream,
		int gfx_version
	)
{
	Check_Object(stream);

	gos_PushCurrentHeap(Heap);
	Effect__Specification *spec =
		new gosFX::Effect__Specification(EffectClassID, stream, gfx_version);
	gos_PopCurrentHeap();

	return spec;
}

//------------------------------------------------------------------------------
//

void 
	gosFX::Effect__Specification::BuildDefaults()
{

	Check_Object(this);
	
	m_lifeSpan.SetCurve(1.0f);
	m_minimumChildSeed.SetCurve(0.0f);
	m_maximumChildSeed.SetCurve(1.0f);
}


//------------------------------------------------------------------------------
//

bool 
	gosFX::Effect__Specification::IsDataValid(bool fix_data)
{
	Check_Object(this);
	Stuff::Scalar minv,maxv;
m_lifeSpan.ExpensiveComputeRange(&minv,&maxv);
if(minv<0.0f) 
	if(fix_data)
	{
		m_lifeSpan.SetCurve(1.0f);
	PAUSE(("Warning: Curve \"lifespan\" in Effect \"%s\" Is Out of Range and has been Reset",(char *)m_name));

	}
	else
		return false;

return true;
}

//------------------------------------------------------------------------------
//
gosFX::Effect__Specification*
	gosFX::Effect__Specification::Create(
		Stuff::MemoryStream *stream,
		int gfx_version
	)
{
	Check_Object(stream);
	Stuff::RegisteredClass::ClassID class_id;
	*stream >> class_id;
	gosFX::Effect::ClassData* class_data =
		Cast_Pointer(
			gosFX::Effect::ClassData*,
			Stuff::RegisteredClass::FindClassData(class_id)
		);
	Check_Object(class_data);
	Check_Pointer(class_data->specificationFactory);
	gosFX::Effect__Specification *spec =
		(*class_data->specificationFactory)(stream, gfx_version);
	Register_Object(spec);
	return spec;
}

//------------------------------------------------------------------------------
//
void
	gosFX::Effect__Specification::Save(Stuff::MemoryStream *stream)
{
	Check_Object(this);
	*stream << m_class << m_name;
	Stuff::ChainIteratorOf<Event*> events(&m_events);
	unsigned count = events.GetSize();
	*stream << count;
	Event *event;
	while ((event = events.ReadAndNext()) != NULL)
	{
		Check_Object(event);
		event->Save(stream);
	}
	m_lifeSpan.Save(stream);
	m_minimumChildSeed.Save(stream);
	m_maximumChildSeed.Save(stream);
	MidLevelRenderer::WriteMLRVersion(stream);
	m_state.Save(stream);
}

//------------------------------------------------------------------------------
//
void
	gosFX::Effect__Specification::Copy(Effect__Specification *spec)
{
	Check_Object(this);
	Check_Object(spec);
	gos_PushCurrentHeap(Heap);

	Verify(spec->m_class == m_class);
	m_name = spec->m_name;

	//
	//----------------------------------------------
	// Copy the events after delete our current ones
	//----------------------------------------------
	//
	Stuff::ChainIteratorOf<Event*> old_events(&m_events);
	old_events.DeletePlugs();
	Stuff::ChainIteratorOf<Event*> new_events(&spec->m_events);
	Event* event;
	while ((event = new_events.ReadAndNext()) != NULL)
	{
		Check_Object(event);
		Event *new_event = new Event(*event);
		Register_Object(new_event);
		AdoptEvent(new_event);
	}

	//
	//---------------------------------------------------
	// Now copy the curves, variance modes, and MLR state
	//---------------------------------------------------
	//
	m_lifeSpan = spec->m_lifeSpan;
	m_minimumChildSeed = spec->m_minimumChildSeed;
	m_maximumChildSeed = spec->m_maximumChildSeed;
	m_state = spec->m_state;

	gos_PopCurrentHeap();
}

//------------------------------------------------------------------------------
//
void
	gosFX::Effect__Specification::AdoptEvent(Event *event)
{
	Check_Object(this);
	Check_Object(event);
	Verify(event->m_time >= 0.0f && event->m_time <= 1.0f);
	Verify(gos_GetCurrentHeap() == Heap);

	//
	//-----------------------------------------------------------
	// The event must be inserted into the chain in order of time
	//-----------------------------------------------------------
	//
	Stuff::ChainIteratorOf<Event*> events(&m_events);
	Event *insert = NULL;
	while ((insert = events.GetCurrent()) != NULL)
	{
		Check_Object(insert);
		if (insert->m_time > event->m_time)
		{
			events.Insert(event);
			return;
		}
		events.Next();
	}
	m_events.Add(event);
}

//############################################################################
//##############################   gosFX::Effect  ###################################
//############################################################################

gosFX::Effect::ClassData*
	gosFX::Effect::DefaultData = NULL;

//------------------------------------------------------------------------------
//
void
	gosFX::Effect::InitializeClass()
{
	Verify(!DefaultData);
	Verify(gos_GetCurrentHeap() == Heap);
	DefaultData =
		new ClassData(
			EffectClassID,
			"gosFX::Effect",
			Node::DefaultData,
			&Make,
			&Specification::Make
		);
	Register_Object(DefaultData);
}

//------------------------------------------------------------------------------
//
void
	gosFX::Effect::TerminateClass()
{
	Unregister_Object(DefaultData);
	delete DefaultData;
	DefaultData = NULL;
}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
gosFX::Effect::Effect(
	ClassData *class_data,
	Specification *spec,
	unsigned flags
):
	Node(class_data),

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品网曝门| 欧美va亚洲va| 成人少妇影院yyyy| 国产成人亚洲综合a∨猫咪| 激情文学综合网| 美国十次了思思久久精品导航| 一区二区三区在线视频观看| 亚洲精品第1页| 亚洲综合免费观看高清完整版 | 成人午夜激情视频| 国产成人午夜视频| 成人一级黄色片| 色婷婷综合中文久久一本| 在线观看亚洲精品视频| 7777精品伊人久久久大香线蕉的| 欧美日韩久久久| 精品久久五月天| 亚洲国产成人自拍| 亚洲综合一二区| 久久国产精品区| 国产成人日日夜夜| 色综合久久66| 日韩三级伦理片妻子的秘密按摩| 久久久夜色精品亚洲| 国产精品国产三级国产aⅴ入口 | 婷婷中文字幕综合| 久久国产精品区| eeuss鲁片一区二区三区| 91成人看片片| 久久久久综合网| 一区二区三区欧美久久| 青青草国产成人av片免费| 成人性视频网站| 欧美精品自拍偷拍| 中文字幕精品在线不卡| 亚洲444eee在线观看| 激情久久久久久久久久久久久久久久| 国产999精品久久久久久| 欧美日韩综合不卡| 国产天堂亚洲国产碰碰| 日韩一卡二卡三卡| 一本到不卡精品视频在线观看| 91免费看片在线观看| 欧美日韩一区二区三区在线看| 久久中文字幕电影| 五月天网站亚洲| 不卡高清视频专区| 精品久久久久久综合日本欧美| 一区二区视频免费在线观看| 国产精品综合av一区二区国产馆| 欧美日韩视频一区二区| 国产精品黄色在线观看| 国内成人自拍视频| 欧美一区二区观看视频| 一区二区三区在线观看欧美| 国产福利一区在线观看| 精品国内片67194| 日韩av高清在线观看| 欧美日韩一区国产| 亚洲免费看黄网站| 一本大道av一区二区在线播放| 久久精品人人做| 国产一区二区三区电影在线观看 | 亚洲综合男人的天堂| 成人一级片在线观看| 国产欧美一区二区精品忘忧草| 美女在线视频一区| 日韩一二三四区| 捆绑调教美女网站视频一区| 日韩三级伦理片妻子的秘密按摩| 性久久久久久久| 欧美军同video69gay| 午夜精品久久久久久久蜜桃app| 色综合视频在线观看| 伊人一区二区三区| 欧美午夜免费电影| 无码av中文一区二区三区桃花岛| 欧美日韩一区视频| 久久国产成人午夜av影院| 精品成人在线观看| 国产成人在线视频网址| 国产蜜臀97一区二区三区| 成人一级片网址| 一区二区三区丝袜| 这里只有精品视频在线观看| 日本vs亚洲vs韩国一区三区二区| 日韩一卡二卡三卡四卡| 国产激情视频一区二区三区欧美 | 久久久不卡网国产精品一区| 麻豆高清免费国产一区| 久久精品亚洲乱码伦伦中文| 成人ar影院免费观看视频| 综合在线观看色| 欧美日韩激情一区二区三区| 久久国产精品99久久久久久老狼| 国产人成一区二区三区影院| 色视频一区二区| 免费成人av在线播放| 欧美激情中文字幕一区二区| 色香蕉久久蜜桃| 六月婷婷色综合| 中文字幕中文乱码欧美一区二区| 色8久久人人97超碰香蕉987| 免费观看久久久4p| 国产精品久久777777| 欧美日韩黄色影视| 成人性视频免费网站| 日韩精品欧美精品| 中文字幕精品在线不卡| 精品1区2区3区| 成人午夜激情影院| 日本亚洲电影天堂| 中文字幕亚洲电影| 日韩三级视频在线看| 色综合天天综合网天天看片| 美女脱光内衣内裤视频久久网站| 国产精品免费视频观看| 在线综合亚洲欧美在线视频| 99视频一区二区三区| 精品亚洲国内自在自线福利| 亚洲伦理在线免费看| 久久欧美中文字幕| 欧美一区二区在线不卡| 91欧美一区二区| 国产suv精品一区二区883| 日韩中文字幕不卡| 一区二区久久久久久| 国产精品国产三级国产三级人妇 | 一区二区三区精品在线观看| 精品免费日韩av| 正在播放亚洲一区| 欧美在线小视频| 99免费精品在线观看| 国产精品一区二区不卡| 久久国产综合精品| 日韩高清不卡一区二区| 亚洲一级二级三级| 亚洲欧美色图小说| 国产精品福利av| 国产精品美女一区二区在线观看| 日韩欧美成人一区| 精品少妇一区二区三区免费观看 | 久久免费看少妇高潮| 欧美大片顶级少妇| 日韩精品一区二区三区四区视频 | 毛片av一区二区| 日韩成人免费看| 亚洲午夜电影网| 亚洲成人自拍网| 亚洲精品自拍动漫在线| 一区二区三区在线视频观看| 久久久精品综合| 国产三级精品视频| 国产精品久久久久一区二区三区共| 久久天堂av综合合色蜜桃网| 日韩精品一区二区三区四区| 精品对白一区国产伦| 26uuu色噜噜精品一区| 欧美经典一区二区| 亚洲婷婷国产精品电影人久久| 国产精品超碰97尤物18| 亚洲一区中文日韩| 日韩精品电影在线| 国产中文字幕精品| 成人一道本在线| 在线观看日韩电影| 91精品欧美福利在线观看| 欧美www视频| 亚洲欧洲在线观看av| 亚洲综合图片区| 男人的天堂久久精品| 国产露脸91国语对白| 色婷婷精品大在线视频 | 3751色影院一区二区三区| 91精品国产综合久久久久| 久久色在线观看| 亚洲免费色视频| 久久国内精品视频| 91在线小视频| 日韩三级视频中文字幕| 国产精品久久毛片av大全日韩| 樱桃视频在线观看一区| 麻豆成人av在线| 99九九99九九九视频精品| 91精品国产一区二区人妖| 久久久国际精品| 香蕉加勒比综合久久| 国产成人午夜高潮毛片| 日韩免费福利电影在线观看| 国产亚洲婷婷免费| 亚洲成国产人片在线观看| 国产一区欧美日韩| 在线一区二区三区四区| 精品国产sm最大网站免费看| 亚洲美女屁股眼交3| 国产美女久久久久| 欧美精品在线视频| 亚洲欧洲精品成人久久奇米网| 日本免费新一区视频| 色偷偷88欧美精品久久久|