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

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

?? interpolator.cpp

?? 骨骼動畫....把魔獸模型解出的代碼..
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
	{
		Node.Time = DataStream.ReadDWord();

		switch(Type)
		{
			case INTERPOLATOR_TYPE_SCALAR:
			{
				Node.Vector.x = DataStream.ReadFloat();
				break;
			}

			case INTERPOLATOR_TYPE_SCALAR_INT:
			{
				Node.Vector.x = static_cast<FLOAT>(DataStream.ReadDWord());
				break;
			}

			case INTERPOLATOR_TYPE_VECTOR2:
			{
				Node.Vector.x = DataStream.ReadFloat();
				Node.Vector.y = DataStream.ReadFloat();
				break;
			}

			case INTERPOLATOR_TYPE_VECTOR3:
			{
				if(ReverseXZ)
				{
					Node.Vector.z = DataStream.ReadFloat();
					Node.Vector.y = DataStream.ReadFloat();
					Node.Vector.x = DataStream.ReadFloat();
				}
				else
				{
					Node.Vector.x = DataStream.ReadFloat();
					Node.Vector.y = DataStream.ReadFloat();
					Node.Vector.z = DataStream.ReadFloat();
				}
				break;
			}

			case INTERPOLATOR_TYPE_VECTOR4:
			{
				Node.Vector.x = DataStream.ReadFloat();
				Node.Vector.y = DataStream.ReadFloat();
				Node.Vector.z = DataStream.ReadFloat();
				Node.Vector.w = DataStream.ReadFloat();
				break;
			}
		}

		switch(InterpolationType)
		{
			case INTERPOLATION_TYPE_HERMITE:
			case INTERPOLATION_TYPE_BEZIER:
			{
				switch(Type)
				{
					case INTERPOLATOR_TYPE_SCALAR:
					{
						Node.InTan.x = DataStream.ReadFloat();
						Node.OutTan.x = DataStream.ReadFloat();
						break;
					}

					case INTERPOLATOR_TYPE_SCALAR_INT:
					{
						Node.InTan.x = static_cast<FLOAT>(DataStream.ReadDWord());
						Node.OutTan.x = static_cast<FLOAT>(DataStream.ReadDWord());
						break;
					}

					case INTERPOLATOR_TYPE_VECTOR2:
					{
						Node.InTan.x = DataStream.ReadFloat();
						Node.InTan.y = DataStream.ReadFloat();
						Node.OutTan.x = DataStream.ReadFloat();
						Node.OutTan.y = DataStream.ReadFloat();
						break;
					}

					case INTERPOLATOR_TYPE_VECTOR3:
					{
						if(ReverseXZ)
						{
							Node.InTan.z = DataStream.ReadFloat();
							Node.InTan.y = DataStream.ReadFloat();
							Node.InTan.x = DataStream.ReadFloat();
							Node.OutTan.z = DataStream.ReadFloat();
							Node.OutTan.y = DataStream.ReadFloat();
							Node.OutTan.x = DataStream.ReadFloat();
						}
						else
						{
							Node.InTan.x = DataStream.ReadFloat();
							Node.InTan.y = DataStream.ReadFloat();
							Node.InTan.z = DataStream.ReadFloat();
							Node.OutTan.x = DataStream.ReadFloat();
							Node.OutTan.y = DataStream.ReadFloat();
							Node.OutTan.z = DataStream.ReadFloat();
						}
						break;
					}

					case INTERPOLATOR_TYPE_VECTOR4:
					{
						Node.InTan.x = DataStream.ReadFloat();
						Node.InTan.y = DataStream.ReadFloat();
						Node.InTan.z = DataStream.ReadFloat();
						Node.InTan.w = DataStream.ReadFloat();
						Node.OutTan.x = DataStream.ReadFloat();
						Node.OutTan.y = DataStream.ReadFloat();
						Node.OutTan.z = DataStream.ReadFloat();
						Node.OutTan.w = DataStream.ReadFloat();
						break;
					}
				}

				break;
			}
		}

		NodeList.push_back(Node);
	}

	Static = FALSE;

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Saves the interpolator
//+-----------------------------------------------------------------------------
BOOL INTERPOLATOR::Save(TOKEN_OUT_STREAM& TokenStream, INT BaseTab)
{
	INT NodeListSize;
	std::list<INTERPOLATOR_NODE>::iterator i;

	if(Static)
	{
		TokenStream.WriteTab(BaseTab);
		TokenStream.WriteWord("static ");
		TokenStream.WriteWord(Name);
		TokenStream.WriteWord(" ");

		switch(Type)
		{
			case INTERPOLATOR_TYPE_SCALAR:
			{
				TokenStream.WriteFloat(StaticVector.x);
				break;
			}

			case INTERPOLATOR_TYPE_SCALAR_INT:
			{
				TokenStream.WriteInt(static_cast<INT>(StaticVector.x));
				break;
			}

			case INTERPOLATOR_TYPE_VECTOR2:
			{
				TokenStream.WriteVector2(StaticVector);
				break;
			}

			case INTERPOLATOR_TYPE_VECTOR3:
			{
				TokenStream.WriteVector3(StaticVector);
				break;
			}

			case INTERPOLATOR_TYPE_VECTOR4:
			{
				TokenStream.WriteVector4(StaticVector);
				break;
			}
		}

		TokenStream.WriteLine(",");

		return TRUE;
	}

	NodeListSize = static_cast<INT>(NodeList.size());
	if(NodeListSize <= 0) return TRUE;

	TokenStream.WriteTab(BaseTab);
	TokenStream.WriteWord(Name);
	TokenStream.WriteWord(" ");
	TokenStream.WriteInt(NodeListSize);
	TokenStream.WriteLine(" {");

	TokenStream.WriteTab(BaseTab + 1);
	switch(InterpolationType)
	{
		case INTERPOLATION_TYPE_NONE:
		{
			TokenStream.WriteLine("DontInterp,");
			break;
		}

		case INTERPOLATION_TYPE_LINEAR:
		{
			TokenStream.WriteLine("Linear,");
			break;
		}

		case INTERPOLATION_TYPE_HERMITE:
		{
			TokenStream.WriteLine("Hermite,");
			break;
		}

		case INTERPOLATION_TYPE_BEZIER:
		{
			TokenStream.WriteLine("Bezier,");
			break;
		}
	}

	if(GlobalSequenceId != INVALID_INDEX)
	{
		TokenStream.WriteTab(BaseTab + 1);
		TokenStream.WriteWord("GlobalSeqId ");
		TokenStream.WriteInt(GlobalSequenceId);
		TokenStream.WriteLine(",");
	}

	i = NodeList.begin();
	while(i != NodeList.end())
	{
		TokenStream.WriteTab(BaseTab + 1);
		TokenStream.WriteInt(i->Time);
		TokenStream.WriteWord(": ");

		switch(Type)
		{
			case INTERPOLATOR_TYPE_SCALAR:
			{
				TokenStream.WriteFloat(i->Vector.x);
				TokenStream.WriteLine(",");

				if(InterpolationType == INTERPOLATION_TYPE_NONE) break;
				if(InterpolationType == INTERPOLATION_TYPE_LINEAR) break;

				TokenStream.WriteTab(BaseTab + 2);
				TokenStream.WriteWord("InTan ");
				TokenStream.WriteFloat(i->InTan.x);
				TokenStream.WriteLine(",");

				TokenStream.WriteTab(BaseTab + 2);
				TokenStream.WriteWord("OutTan ");
				TokenStream.WriteFloat(i->OutTan.x);
				TokenStream.WriteLine(",");

				break;
			}

			case INTERPOLATOR_TYPE_SCALAR_INT:
			{
				TokenStream.WriteInt(static_cast<INT>(i->Vector.x));
				TokenStream.WriteLine(",");

				if(InterpolationType == INTERPOLATION_TYPE_NONE) break;
				if(InterpolationType == INTERPOLATION_TYPE_LINEAR) break;

				TokenStream.WriteTab(BaseTab + 2);
				TokenStream.WriteWord("InTan ");
				TokenStream.WriteInt(static_cast<INT>(i->InTan.x));
				TokenStream.WriteLine(",");

				TokenStream.WriteTab(BaseTab + 2);
				TokenStream.WriteWord("OutTan ");
				TokenStream.WriteInt(static_cast<INT>(i->OutTan.x));
				TokenStream.WriteLine(",");

				break;
			}

			case INTERPOLATOR_TYPE_VECTOR2:
			{
				TokenStream.WriteVector2(i->Vector);
				TokenStream.WriteLine(",");

				if(InterpolationType == INTERPOLATION_TYPE_NONE) break;
				if(InterpolationType == INTERPOLATION_TYPE_LINEAR) break;

				TokenStream.WriteTab(BaseTab + 2);
				TokenStream.WriteWord("InTan ");
				TokenStream.WriteVector2(i->InTan);
				TokenStream.WriteLine(",");

				TokenStream.WriteTab(BaseTab + 2);
				TokenStream.WriteWord("OutTan ");
				TokenStream.WriteVector2(i->OutTan);
				TokenStream.WriteLine(",");

				break;
			}

			case INTERPOLATOR_TYPE_VECTOR3:
			{
				TokenStream.WriteVector3(i->Vector);
				TokenStream.WriteLine(",");

				if(InterpolationType == INTERPOLATION_TYPE_NONE) break;
				if(InterpolationType == INTERPOLATION_TYPE_LINEAR) break;

				TokenStream.WriteTab(BaseTab + 2);
				TokenStream.WriteWord("InTan ");
				TokenStream.WriteVector3(i->InTan);
				TokenStream.WriteLine(",");

				TokenStream.WriteTab(BaseTab + 2);
				TokenStream.WriteWord("OutTan ");
				TokenStream.WriteVector3(i->OutTan);
				TokenStream.WriteLine(",");

				break;
			}

			case INTERPOLATOR_TYPE_VECTOR4:
			{
				TokenStream.WriteVector4(i->Vector);
				TokenStream.WriteLine(",");

				if(InterpolationType == INTERPOLATION_TYPE_NONE) break;
				if(InterpolationType == INTERPOLATION_TYPE_LINEAR) break;

				TokenStream.WriteTab(BaseTab + 2);
				TokenStream.WriteWord("InTan ");
				TokenStream.WriteVector4(i->InTan);
				TokenStream.WriteLine(",");

				TokenStream.WriteTab(BaseTab + 2);
				TokenStream.WriteWord("OutTan ");
				TokenStream.WriteVector4(i->OutTan);
				TokenStream.WriteLine(",");

				break;
			}
		}

		i++;
	}

	TokenStream.WriteTab(BaseTab);
	TokenStream.WriteLine("}");

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Loads an interpolator
//+-----------------------------------------------------------------------------
BOOL INTERPOLATOR::Load(TOKEN_IN_STREAM& TokenStream)
{
	INT i;
	INT NrOfNodes;
	INTERPOLATOR_NODE Node;
	std::string Token;
	std::stringstream Stream;

	NodeList.clear();

	NrOfNodes = TokenStream.ReadInt();
	if(!TokenStream.ExpectChar('{')) return FALSE;

	Token = TokenStream.ReadWord();
	if(Token == "DontInterp,")
	{
		InterpolationType = INTERPOLATION_TYPE_NONE;
	}
	else if(Token == "Linear,")
	{
		InterpolationType = INTERPOLATION_TYPE_LINEAR;
	}
	else if(Token == "Hermite,")
	{
		InterpolationType = INTERPOLATION_TYPE_HERMITE;
	}
	else if(Token == "Bezier,")
	{
		InterpolationType = INTERPOLATION_TYPE_BEZIER;
	}
	else
	{
		Error.SetMessage("Unable to load \"" + TokenStream.GetFileName() + "\", unknown interpolation mode \"" + Token + "\"!");
		return FALSE;
	}

	for(i = 0; i < NrOfNodes; i++)
	{
		Token = TokenStream.ReadWord();
		if(Token == "GlobalSeqId")
		{
			GlobalSequenceId = TokenStream.ReadInt();
			if(!TokenStream.ExpectChar(',')) return FALSE;

			NrOfNodes++;
			continue;
		}

		Stream.clear();
		Stream.str(Token);

		Node.Time = 0;
		Stream >> Node.Time;

		switch(Type)
		{
			case INTERPOLATOR_TYPE_SCALAR:
			case INTERPOLATOR_TYPE_SCALAR_INT:
			{
				Node.Vector.x = TokenStream.ReadFloat();
				Node.Vector.y = 0.0f;
				Node.Vector.z = 0.0f;
				Node.Vector.w = 0.0f;
				if(!TokenStream.ExpectChar(',')) return FALSE;

				if(InterpolationType == INTERPOLATION_TYPE_NONE) break;
				if(InterpolationType == INTERPOLATION_TYPE_LINEAR) break;

				if(!TokenStream.ExpectWord("InTan")) return FALSE;
				Node.InTan.x = TokenStream.ReadFloat();
				Node.InTan.y = 0.0f;
				Node.InTan.z = 0.0f;
				Node.InTan.w = 0.0f;
				if(!TokenStream.ExpectChar(',')) return FALSE;

				if(!TokenStream.ExpectWord("OutTan")) return FALSE;
				Node.OutTan.x = TokenStream.ReadFloat();
				Node.OutTan.y = 0.0f;
				Node.OutTan.z = 0.0f;
				Node.OutTan.w = 0.0f;
				if(!TokenStream.ExpectChar(',')) return FALSE;

				break;
			}

			case INTERPOLATOR_TYPE_VECTOR2:
			{
				if(!TokenStream.ReadVector2(Node.Vector)) return FALSE;
				if(!TokenStream.ExpectChar(',')) return FALSE;

				if(InterpolationType == INTERPOLATION_TYPE_NONE) break;
				if(InterpolationType == INTERPOLATION_TYPE_LINEAR) break;

				if(!TokenStream.ExpectWord("InTan")) return FALSE;
				if(!TokenStream.ReadVector2(Node.InTan)) return FALSE;
				if(!TokenStream.ExpectChar(',')) return FALSE;

				if(!TokenStream.ExpectWord("OutTan")) return FALSE;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区高清视频在线观看| 一区二区三区四区不卡在线| 依依成人精品视频| 91蜜桃传媒精品久久久一区二区| 亚洲欧洲日产国码二区| 91国在线观看| 亚洲综合久久av| 精品奇米国产一区二区三区| 国产日韩欧美精品在线| 视频一区中文字幕| 91视频.com| 亚洲三级免费电影| 成人动漫一区二区| 国产亚洲综合在线| 国产一区二区三区四区在线观看| 91福利国产成人精品照片| 欧美国产激情二区三区 | 国产婷婷色一区二区三区四区| 亚洲国产你懂的| 91小视频免费观看| 亚洲啪啪综合av一区二区三区| 极品销魂美女一区二区三区| 91精品国产综合久久久久久| 日韩精品亚洲一区二区三区免费| 欧美曰成人黄网| 一区二区在线观看视频| 91欧美激情一区二区三区成人| 日本一二三四高清不卡| 东方欧美亚洲色图在线| 久久久精品一品道一区| 国产在线观看一区二区| 久久久久免费观看| 韩国三级中文字幕hd久久精品| 精品国产亚洲一区二区三区在线观看| 免费成人小视频| 2欧美一区二区三区在线观看视频| 免费欧美在线视频| 欧美不卡视频一区| 国产精品亚洲视频| 亚洲国产精品精华液ab| 97精品国产97久久久久久久久久久久| 国产精品久久久久久久久果冻传媒| 成人av中文字幕| 亚洲老妇xxxxxx| 欧美中文字幕一二三区视频| 日韩中文字幕av电影| 欧美刺激午夜性久久久久久久| 国产一区二区影院| 国产精品久久国产精麻豆99网站| 91在线精品一区二区| 亚洲成人动漫在线免费观看| 欧美www视频| 国产成人精品免费一区二区| 亚洲男同1069视频| 欧美精品乱码久久久久久按摩| 久久99久国产精品黄毛片色诱| 久久精品日韩一区二区三区| 97久久超碰国产精品| 日本中文字幕一区二区视频| xnxx国产精品| 久久久国产精华| 色综合久久久网| 麻豆国产精品官网| 综合电影一区二区三区| 欧美一级欧美三级| 成人性生交大片免费看中文 | 欧美日韩国产高清一区二区| 裸体健美xxxx欧美裸体表演| 中文字幕成人网| 欧美日韩精品电影| 成人在线一区二区三区| 亚洲成在线观看| 国产精品久久久久婷婷二区次| 欧美日韩不卡一区| av在线不卡电影| 国内久久精品视频| 亚洲成av人片在线观看无码| 国产精品国产三级国产专播品爱网| 欧美日韩国产高清一区二区三区| 成人小视频免费在线观看| 婷婷一区二区三区| 国产精品天美传媒沈樵| 日韩一级视频免费观看在线| 91视频在线观看免费| 国产一区视频导航| 日韩成人av影视| 夜夜嗨av一区二区三区四季av| 久久久久久综合| 欧美疯狂做受xxxx富婆| 日本伦理一区二区| 菠萝蜜视频在线观看一区| 久久99精品久久久久婷婷| 亚洲国产成人porn| 亚洲欧美日韩中文字幕一区二区三区| 久久久午夜电影| 欧美成人三级在线| 91精品国产日韩91久久久久久| 在线视频你懂得一区| av成人老司机| 99这里都是精品| 国产aⅴ精品一区二区三区色成熟| 奇米一区二区三区av| 图片区小说区区亚洲影院| 一卡二卡三卡日韩欧美| 亚洲欧美偷拍另类a∨色屁股| 国产精品私房写真福利视频| 久久精品人人做人人爽97| 久久综合九色综合欧美98| 欧美日韩国产精品成人| 欧美中文字幕不卡| 欧亚洲嫩模精品一区三区| 色呦呦一区二区三区| 色欧美片视频在线观看在线视频| av一二三不卡影片| 色综合天天综合网天天狠天天| bt7086福利一区国产| 一本高清dvd不卡在线观看| 91美女片黄在线观看91美女| 91色|porny| 欧美午夜在线一二页| 欧美日韩国产天堂| 欧美精品日韩精品| 日韩一区二区在线观看| 久久只精品国产| 国产精品久久久久久久久免费相片| 中文字幕不卡在线| 一区二区三区不卡在线观看| 亚洲成人动漫精品| 国内久久婷婷综合| 99久久久无码国产精品| 在线看国产一区二区| 在线不卡中文字幕| 精品久久久久久亚洲综合网| 日本一区二区三区久久久久久久久不| 国产精品久线在线观看| 一区二区三区在线免费播放 | 日韩欧美电影在线| 国产午夜精品在线观看| 亚洲私人影院在线观看| 亚洲成av人片观看| 国产综合久久久久影院| av午夜精品一区二区三区| 欧美日本国产视频| 国产视频一区二区在线| 亚洲在线视频一区| 久久99日本精品| 色综合天天性综合| 欧美电影免费观看高清完整版在线 | 久久久99精品免费观看| 中文字幕在线不卡一区| 亚洲不卡av一区二区三区| 精品亚洲国内自在自线福利| 91在线高清观看| 亚洲精品一区二区三区影院| 亚洲蜜臀av乱码久久精品蜜桃| 麻豆精品一区二区| 日本精品视频一区二区三区| 日韩精品一区二区三区蜜臀 | 色国产精品一区在线观看| 日韩视频中午一区| 一区二区三区自拍| 国产大陆a不卡| 欧美日韩国产首页| 亚洲欧美日韩中文字幕一区二区三区 | 久久午夜羞羞影院免费观看| 亚洲妇女屁股眼交7| 粉嫩av一区二区三区| 日韩一区二区三区视频在线| 亚洲精品国产视频| 国产剧情一区二区三区| 欧美猛男超大videosgay| 国产色产综合色产在线视频| 男女激情视频一区| 欧美中文字幕不卡| 日韩一区中文字幕| 国产99久久久国产精品潘金网站| 日韩一区二区三区在线视频| 亚洲一二三区不卡| 色婷婷综合久久久| 一色屋精品亚洲香蕉网站| 国产一区二区三区日韩| 91麻豆精品国产91久久久资源速度| 亚洲精品乱码久久久久久 | 69堂成人精品免费视频| 亚洲激情在线激情| 91丝袜美女网| 国产精品高潮呻吟久久| 丰满白嫩尤物一区二区| 国产性天天综合网| 国产精品一区二区x88av| 欧美大片一区二区| 麻豆精品一区二区综合av| 911国产精品| 青青草国产成人av片免费| 欧美日韩欧美一区二区| 亚洲成人在线免费| 欧美人动与zoxxxx乱| 日韩va欧美va亚洲va久久| 日韩一区二区中文字幕| 另类调教123区|