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

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

?? mainwindow.cpp

?? 骨骼動(dòng)畫....把魔獸模型解出的代碼..
?? CPP
?? 第 1 頁 / 共 3 頁
字號(hào):
		case MainWindowsGlobalSequenceManager:
		{
			GlobalSequenceManagerWindow.Show();
			GlobalSequenceManagerWindow.Restore();
			GlobalSequenceManagerWindow.Activate();
			return 0;
		}

		case MainWindowsMpqBrowser:
		{
			MpqWindow.Show();
			MpqWindow.Restore();
			MpqWindow.Activate();
			return 0;
		}

		case MainExtrasColoredText:
		{
			ColoredTextDialog.Display(Window);
			return 0;
		}

		case MainExtrasLoadingScreen:
		{
			std::string TextureFileName;

			if(!LoadingScreenDialog.Display(Window, TextureFileName)) return 0;

			TextureFileName = Common.GetFileName(TextureFileName);

			if(!SaveFileIfNeccessary(Cancel))
			{
				Error.DisplayMessage(Window);
				Error.ClearMessage();
				return 0;
			}

			if(Cancel) return 0;

			if(!NewLoadingScreen(TextureFileName))
			{
				Error.DisplayMessage(Window);
				Error.ClearMessage();
				return 0;
			}

			return 0;
		}

		case MainHelpHelp:
		{
			if(!DisplayHelp())
			{
				Error.DisplayMessage(Window);
				Error.ClearMessage();
				return 0;
			}

			return 0;
		}

		case MainHelpAbout:
		{
			MessageBoxEx(Window, EDITOR_HELP_MESSAGE.c_str(), EDITOR_HELP_TITLE.c_str(), MB_ICONINFORMATION, CURRENT_LANGUAGE);
			return 0;
		}

		case MainTeamColorRed:
		case MainTeamColorBlue:
		case MainTeamColorTeal:
		case MainTeamColorPurple:
		case MainTeamColorYellow:
		case MainTeamColorOrange:
		case MainTeamColorGreen:
		case MainTeamColorPink:
		case MainTeamColorGray:
		case MainTeamColorLightBlue:
		case MainTeamColorDarkGreen:
		case MainTeamColorBrown:
		case MainTeamColorBlack:
		{
			CheckMenuItem(TeamColor.GetCurrentTeamColorId(), FALSE);
			TeamColor.SetCurrentTeamColorId(MenuItem);
			CheckMenuItem(TeamColor.GetCurrentTeamColorId(), TRUE);
			return 0;
		}
	}

	if(MenuItem < ModelHistory.GetMinMenuItemId()) return 0;
	if(MenuItem > ModelHistory.GetMaxMenuItemId()) return 0;

	if(!SaveFileIfNeccessary(Cancel))
	{
		Error.DisplayMessage(Window);
		Error.ClearMessage();
		return 0;
	}

	if(Cancel) return 0;

	if(!CloseFile(TRUE)) return FALSE;

	FileName = ModelHistory.GetFileName(MenuItem);
	Common.SetCurrentDirectory(Common.GetPath(FileName));

	if(!LoadByForce(FileName))
	{
		Error.DisplayMessage(Window);
		Error.ClearMessage();
		return 0;
	}

	return 0;
}


//+-----------------------------------------------------------------------------
//| Handles the window control messages
//+-----------------------------------------------------------------------------
LRESULT MAIN_WINDOW::ControlHandler(HWND Control, WORD Code)
{
	return 0;
}


//+-----------------------------------------------------------------------------
//| Handles the window notify messages
//+-----------------------------------------------------------------------------
LRESULT MAIN_WINDOW::NotifyHandler(HWND Control, UINT Code, NMHDR* Header)
{
	return 0;
}


//+-----------------------------------------------------------------------------
//| Returns the history menu
//+-----------------------------------------------------------------------------
HMENU MAIN_WINDOW::GetHistoryMenu()
{
	HMENU Menu;
	HMENU SubMenu;

	Menu = ::GetMenu(Window);
	if(Menu == NULL) return NULL;

	SubMenu = ::GetSubMenu(Menu, 1);
	if(SubMenu == NULL) return NULL;

	return SubMenu;
}


//+-----------------------------------------------------------------------------
//| Updates and renders the window
//+-----------------------------------------------------------------------------
VOID MAIN_WINDOW::UpdateAndRender(INT TimeDifference)
{
	if(TimeDifference > 0)
	{
		Keyboard.Update();
		Mouse.Update();

		Camera.Update(Window);
		Graphics.SetCamera(Camera);

		if(Keyboard.KeyDown(KEY_LEFTCTRL))
		{
			if(Mouse.ButtonPressed(BUTTON_LEFT))
			{
				POINT Point;
				BOOL InsideScreen;
				MODEL_GEOSET* Geoset;
				MODEL_MATERIAL* Material;
				D3DXVECTOR3 RayPosition;
				D3DXVECTOR3 RayDirection;

				GetCursorPos(&Point);
				ScreenToClient(Window, &Point);

				InsideScreen = FALSE;
				while(TRUE)
				{
					if(Point.x < 1) break;
					if(Point.y < 1) break;
					if(Point.x >= (GetWidth() - 1)) break;
					if(Point.y >= (GetHeight() - 1)) break;

					InsideScreen = TRUE;
					break;
				}

				if(InsideScreen)
				{
					Graphics.BuildRay(Point, GetWidth(), GetHeight(), RayPosition, RayDirection);

					Geoset = Model.GetIntersectedGeoset(RayPosition, RayDirection);
					if(Geoset != NULL)
					{
						GeosetManagerWindow.SelectGeoset(Geoset);
						FlashingGeoset.SetGeoset(Geoset);

						if(Geoset->MaterialNode.IsAttached())
						{
							Material = Geoset->MaterialNode.GetObjectData();
							MaterialManagerWindow.SelectMaterial(Material);
						}
						else
						{
							MaterialManagerWindow.SelectMaterial(NULL);
						}
					}
					else
					{
						GeosetManagerWindow.SelectGeoset(NULL);
						MaterialManagerWindow.SelectMaterial(NULL);
					}
				}
			}
		}
	}

	if(!WindowActive) return;

	if(Graphics.BeginRender(GraphicsWindow))
	{
		Render(TimeDifference);
		Graphics.EndRender();
	}
}


//+-----------------------------------------------------------------------------
//| Checks if a model is loaded
//+-----------------------------------------------------------------------------
BOOL MAIN_WINDOW::ModelIsLoaded()
{
	return ModelLoaded;
}


//+-----------------------------------------------------------------------------
//| Makes the model unsaved
//+-----------------------------------------------------------------------------
VOID MAIN_WINDOW::MakeModelUnsaved()
{
	ModelSaved = FALSE;

	UpdateWindowStatus(TRUE);
}


//+-----------------------------------------------------------------------------
//| Makes the model never saved
//+-----------------------------------------------------------------------------
VOID MAIN_WINDOW::MakeModelNeverSaved()
{
	ModelNeverSaved = TRUE;

	UpdateWindowStatus(TRUE);
}


//+-----------------------------------------------------------------------------
//| Loads a model, texture or MPQ archive by force
//+-----------------------------------------------------------------------------
BOOL MAIN_WINDOW::LoadByForce(CONST std::string& FileName)
{
	std::string Extention;
	std::string RealFileName;

	RealFileName = Common.GetFileName(FileName);

	Extention = Common.LowerCase(Common.GetExtention(FileName));
	if(MpqWindow.IsMpqExtention(Extention))
	{
		if(!MpqWindow.OpenMpqByName(RealFileName)) return FALSE;

		MpqWindow.Show();
		MpqWindow.Restore();
		MpqWindow.Activate();

		return TRUE;
	}
	else if(ResourceLoader.IsModelExtention(Extention))
	{
		BUFFER Buffer;

		if(!FileLoader.LoadFromFile(RealFileName, Buffer))
		{
			Error.SetMessage("Unable to load \"" + FileName + "\", file does not exist!");
			return FALSE;
		}

		if(!LoadModelFromBuffer(RealFileName, Buffer)) return FALSE;

		return TRUE;
	}
	else if(ResourceLoader.IsTextureExtention(Extention))
	{
		BUFFER Buffer;

		if(!FileLoader.LoadFromFile(RealFileName, Buffer))
		{
			Error.SetMessage("Unable to load \"" + FileName + "\", file does not exist!");
			return FALSE;
		}

		if(!LoadTextureFromBuffer(RealFileName, Buffer)) return FALSE;

		return TRUE;
	}

	Error.SetMessage("Unable to load \"" + FileName + "\", unknown extention!");
	return FALSE;
}


//+-----------------------------------------------------------------------------
//| Loads a file from a buffer
//+-----------------------------------------------------------------------------
BOOL MAIN_WINDOW::LoadFileFromBuffer(CONST std::string& FileName, BUFFER& Buffer, BOOL SkipSaveTest)
{
	BOOL Cancel;
	std::string Extention;

	if(!SkipSaveTest)
	{
		if(!SaveFileIfNeccessary(Cancel)) return FALSE;
		if(Cancel) return TRUE;
	}

	if(!CloseFile(TRUE)) return FALSE;

	Extention = Common.LowerCase(Common.GetExtention(FileName));
	if(ResourceLoader.IsModelExtention(Extention))
	{
		if(!LoadModelFromBuffer(FileName, Buffer))
		{
			CloseFile();
			return FALSE;
		}

		return TRUE;
	}
	else if(ResourceLoader.IsTextureExtention(Extention))
	{
		if(!LoadTextureFromBuffer(FileName, Buffer))
		{
			CloseFile();
			return FALSE;
		}

		return TRUE;
	}

	Error.SetMessage("Unable to load \"" + FileName + "\", unknown extention!");
	return FALSE;
}


//+-----------------------------------------------------------------------------
//| Loads a model from a buffer
//+-----------------------------------------------------------------------------
BOOL MAIN_WINDOW::LoadModelFromBuffer(CONST std::string& FileName, BUFFER& Buffer)
{
	FLOAT Distance;

	if(!ResourceLoader.LoadModel(Model, FileName, Buffer)) return FALSE;

	Model.CalculateBoundsRadius();
	Distance = std::max(Model.GetBoundsRadius(), Model.Data().Info.Extent.Radius);
	Camera.SetDefaultTarget(Model.GetBoundsCenter());
	Camera.SetDefaultDistance(Distance * CAMERA_FACTOR_MODEL);

	ModelLoaded = TRUE;
	ModelSaved = TRUE;
	ModelNeverSaved = FALSE;

	ModelFileName = Common.GetFileName(FileName);

	Camera.Reset(Window);
	UpdateWindowStatus(TRUE);

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Loads a texture from a buffer
//+-----------------------------------------------------------------------------
BOOL MAIN_WINDOW::LoadTextureFromBuffer(CONST std::string& FileName, BUFFER& Buffer)
{
	TEXTURE* Texture;

	if(!TextureManager.Load(FileName)) return FALSE;

	Texture = TextureManager.GetTexture(FileName);
	if(Texture == NULL) return FALSE;

	if(!Model.CreateTextureModel(FileName, Texture->GetWidth(), Texture->GetHeight(), Texture->GetRealWidth(), Texture->GetRealHeight())) return FALSE;

	Model.CalculateBoundsRadius();
	Camera.SetDefaultPitch(0);
	Camera.SetDefaultTarget(Model.GetBoundsCenter());
	Camera.SetDefaultDistance(Model.GetBoundsRadius() * CAMERA_FACTOR_MODEL);

	ModelLoaded = TRUE;
	ModelSaved = TRUE;
	ModelNeverSaved = TRUE;

	ModelFileName = FileName + ".mdl";

	Camera.Reset(Window);
	UpdateWindowStatus(TRUE);

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Registers the desired extentions
//+-----------------------------------------------------------------------------
BOOL MAIN_WINDOW::RegisterExtentions(REGISTER_INFO& RegisterInfo)
{
	std::string Program;
	std::string ImageIconPath;
	std::string ModelIconPath;
	std::string ArchiveIconPath;

	Program = Common.GetProgramFileName();
	ImageIconPath = Program + ",4";
	ModelIconPath = Program + ",5";
	ArchiveIconPath = Program + ",3";

	if(RegisterInfo.Mdl)
	{
		if(!Register.RegisterExtention("mdl", "Warcraft 3 Model", ModelIconPath.c_str())) return FALSE;
	}

	if(RegisterInfo.Mdx)
	{

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91亚洲午夜精品久久久久久| 色88888久久久久久影院按摩| 亚洲成人在线网站| 中文字幕亚洲精品在线观看| 久久久天堂av| 欧美一级高清片在线观看| 欧美色手机在线观看| 一本色道久久综合狠狠躁的推荐| 国产在线视频一区二区| 久久99精品一区二区三区 | 亚洲大片免费看| 亚洲一区二区免费视频| 亚洲桃色在线一区| √…a在线天堂一区| 国产欧美中文在线| 亚洲私人影院在线观看| 亚洲人妖av一区二区| 中文字幕一区二区日韩精品绯色| 国产女人18毛片水真多成人如厕 | 国产91清纯白嫩初高中在线观看| 国产成人精品三级麻豆| 成人免费毛片片v| 色婷婷av一区二区三区之一色屋| 91免费国产在线观看| 在线观看av不卡| 欧美在线高清视频| 欧美日韩久久久| 日韩一区二区三区四区五区六区| 精品日产卡一卡二卡麻豆| 国产无一区二区| 亚洲色图色小说| 三级久久三级久久久| 国产中文字幕精品| 色综合久久九月婷婷色综合| 欧美精品xxxxbbbb| 久久精品视频在线看| 亚洲日本va午夜在线电影| 亚洲国产欧美在线人成| 久久超碰97人人做人人爱| 成人免费看视频| 在线观看一区二区精品视频| 欧美一区二区日韩一区二区| 久久色.com| 亚洲激情av在线| 久久精品国产色蜜蜜麻豆| 懂色av一区二区三区免费观看| 91视频观看免费| 欧美人与禽zozo性伦| 国产日韩在线不卡| 亚洲图片一区二区| 粉嫩一区二区三区在线看| 欧美在线一二三四区| 日韩精品最新网址| 亚洲私人影院在线观看| 狠狠色丁香久久婷婷综| 色综合天天综合网国产成人综合天| 在线播放中文一区| 国产精品嫩草久久久久| 日韩av一区二区三区四区| 91网站视频在线观看| 欧美一区二区三区成人| 亚洲人成精品久久久久久| 久久99精品国产.久久久久| 色一区在线观看| 国产日韩欧美制服另类| 日本欧美久久久久免费播放网| av在线这里只有精品| 欧美不卡一二三| 视频一区二区欧美| 91欧美一区二区| 久久精品视频一区二区三区| 日本不卡一区二区| 色94色欧美sute亚洲线路一久| 精品国产污网站| 亚洲综合免费观看高清完整版| 国产经典欧美精品| 欧美一级免费大片| 樱花影视一区二区| 不卡视频在线观看| 欧美精选在线播放| 亚洲男人的天堂一区二区| 国产精品亚洲一区二区三区在线| 337p亚洲精品色噜噜| 亚洲人成网站在线| 国产精品99久久久久久久女警| 在线观看91av| 国产精品久久久久久久第一福利| 日韩国产一区二| 色综合天天视频在线观看| 精品1区2区在线观看| 蜜桃精品在线观看| 欧美蜜桃一区二区三区| 亚洲精品大片www| 国产成人亚洲综合a∨婷婷图片| 欧美日韩一区高清| 亚洲欧美另类综合偷拍| 成人精品在线视频观看| 久久久久99精品国产片| 国产综合久久久久影院| 日韩欧美国产三级| 日韩福利视频网| 色婷婷国产精品| 亚洲欧洲精品一区二区三区| 国产精品一区二区你懂的| 欧美日韩精品一区二区在线播放| 亚洲第一主播视频| 欧美午夜在线一二页| 午夜视频在线观看一区| 欧美色图天堂网| 亚洲第一主播视频| 91精品国产综合久久婷婷香蕉| 天天色图综合网| 88在线观看91蜜桃国自产| 奇米影视7777精品一区二区| 欧美一区二区成人6969| 日韩国产欧美三级| 日韩视频不卡中文| 国内精品国产成人国产三级粉色| 久久久久久久久久久久电影| 国产精品自在欧美一区| 久久久久国产精品免费免费搜索| 成人国产精品免费观看| 国产精品成人免费精品自在线观看| 成人免费va视频| 亚洲欧美另类综合偷拍| 欧美日本乱大交xxxxx| 久久电影网站中文字幕| 国产婷婷色一区二区三区四区 | 97精品国产露脸对白| 亚洲精品成人a在线观看| 欧美日韩激情在线| 九色综合国产一区二区三区| 国产精品视频麻豆| 欧美亚一区二区| 免费在线观看视频一区| 国产日韩欧美精品在线| 欧美中文字幕一区二区三区| 日韩电影一二三区| 精品久久久久久久久久久久包黑料| 国产精品中文字幕欧美| 中文字幕一区二区在线播放| 欧美色综合天天久久综合精品| 美女www一区二区| 亚洲色欲色欲www| 欧美一区二区三区视频免费| 成人网页在线观看| 亚洲成人综合网站| 国产亚洲美州欧州综合国| 一本大道av一区二区在线播放| 奇米精品一区二区三区四区| 国产精品久久久久久久浪潮网站 | 欧美体内she精高潮| 久久精品国产精品亚洲红杏| 中文字幕在线观看不卡| 7777精品伊人久久久大香线蕉| 国产一区啦啦啦在线观看| 亚洲欧美福利一区二区| 欧美本精品男人aⅴ天堂| 94-欧美-setu| 国产一区二区三区电影在线观看| 亚洲天天做日日做天天谢日日欢 | 久久久另类综合| 欧美无砖砖区免费| caoporn国产精品| 免费精品99久久国产综合精品| 亚洲人吸女人奶水| 精品福利视频一区二区三区| 欧美日韩综合一区| 成人黄色777网| 蜜臀av性久久久久av蜜臀妖精 | 国产91富婆露脸刺激对白| 午夜天堂影视香蕉久久| 久久久久久久久免费| 色域天天综合网| 久久99精品国产麻豆婷婷| 毛片不卡一区二区| 日韩欧美视频在线| 国产成人啪午夜精品网站男同| 婷婷激情综合网| 国产精品成人免费| 久久精品一二三| 日韩欧美综合一区| 欧美日韩一区高清| 色94色欧美sute亚洲13| 97精品久久久午夜一区二区三区| 国产精品亚洲第一区在线暖暖韩国| 免费在线观看成人| 日本欧美在线看| 午夜精品久久久久久久久| 亚洲精品国产成人久久av盗摄 | 久久精品国产999大香线蕉| 亚洲一区二区视频| 亚洲日本在线a| 国产精品污www在线观看| 精品国产91久久久久久久妲己| 日韩欧美专区在线| 欧美一级专区免费大片| 欧美福利视频一区| 9191久久久久久久久久久| 欧美视频一区在线|