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

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

?? mainwindow.cpp

?? 骨骼動(dòng)畫....把魔獸模型解出的代碼..
?? CPP
?? 第 1 頁 / 共 3 頁
字號(hào):
		if(!Register.RegisterExtention("mdx", "Warcraft 3 Model", ModelIconPath.c_str())) return FALSE;
	}

	if(RegisterInfo.Mpq)
	{
		if(!Register.RegisterExtention("mpq", "MPQ Archive", ArchiveIconPath.c_str())) return FALSE;
	}

	if(RegisterInfo.W3m)
	{
		if(!Register.RegisterExtention("w3m", "MPQ Archive", ArchiveIconPath.c_str())) return FALSE;
	}

	if(RegisterInfo.W3x)
	{
		if(!Register.RegisterExtention("w3x", "MPQ Archive", ArchiveIconPath.c_str())) return FALSE;
	}

	if(RegisterInfo.W3n)
	{
		if(!Register.RegisterExtention("w3n", "MPQ Archive", ArchiveIconPath.c_str())) return FALSE;
	}

	if(RegisterInfo.Bmp)
	{
		if(!Register.RegisterExtention("bmp", "Warcraft 3 Texture", ImageIconPath.c_str())) return FALSE;
	}

	if(RegisterInfo.Tga)
	{
		if(!Register.RegisterExtention("tga", "Warcraft 3 Texture", ImageIconPath.c_str())) return FALSE;
	}

	if(RegisterInfo.Png)
	{
		if(!Register.RegisterExtention("png", "Warcraft 3 Texture", ImageIconPath.c_str())) return FALSE;
	}

	if(RegisterInfo.Jpg)
	{
		if(!Register.RegisterExtention("jpg", "Warcraft 3 Texture", ImageIconPath.c_str())) return FALSE;
	}

	if(RegisterInfo.Jpeg)
	{
		if(!Register.RegisterExtention("jpeg", "Warcraft 3 Texture", ImageIconPath.c_str())) return FALSE;
	}

	if(RegisterInfo.Pcx)
	{
		if(!Register.RegisterExtention("pcx", "Warcraft 3 Texture", ImageIconPath.c_str())) return FALSE;
	}

	if(RegisterInfo.Blp)
	{
		if(!Register.RegisterExtention("blp", "Warcraft 3 Texture", ImageIconPath.c_str())) return FALSE;
	}

	if(RegisterInfo.OpenWith)
	{
		if(!Register.RegisterOpenWith("Open with War3ModelEditor")) return FALSE;
	}

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Creates a new file (model)
//+-----------------------------------------------------------------------------
BOOL MAIN_WINDOW::NewFile()
{
	CloseFile(TRUE);

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

	ModelFileName = DEFAULT_MODEL_NAME;

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

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Opens an existing file
//+-----------------------------------------------------------------------------
BOOL MAIN_WINDOW::OpenFile()
{
	BUFFER Buffer;
	std::string FileName;
	WINDOW_FILE_DIALOG FileDialog;

	FileDialog.SetTitle("Open Model or Texture");
	FileDialog.SetFilter(FILTER_BOTH);
	if(!FileDialog.OpenFile(Window, FileName)) return TRUE;

	if(!FileLoader.LoadFromFile(FileName, Buffer)) return FALSE;
	if(!LoadFileFromBuffer(FileName, Buffer, TRUE)) return FALSE;

	ModelHistory.AddFileName(FileName);

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Imports an existing file
//+-----------------------------------------------------------------------------
BOOL MAIN_WINDOW::ImportFile()
{
	BUFFER Buffer;
	FLOAT Distance;
	std::string FileName;
	WINDOW_FILE_DIALOG FileDialog;

	FileDialog.SetTitle("Import Model");
	FileDialog.SetFilter(ModelImporter.GetFilter());
	if(!FileDialog.OpenFile(Window, FileName)) return TRUE;

	if(!FileLoader.LoadFromFile(FileName, Buffer)) return FALSE;
	if(!CloseFile(TRUE)) return FALSE;

	if(!ModelImporter.ImportModel(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 = TRUE;

	ModelFileName = Common.GetFileName(FileName);

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

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Saves the file
//+-----------------------------------------------------------------------------
BOOL MAIN_WINDOW::SaveFile(BOOL& Cancel, BOOL ForceNewName)
{
	BUFFER Buffer;
	std::string FileName;
	WINDOW_FILE_DIALOG FileDialog;

	Cancel = FALSE;

	if(ForceNewName || ModelNeverSaved)
	{
		FileName = (ModelFileName == "") ? DEFAULT_MODEL_NAME : ModelFileName;

		FileDialog.SetTitle("Save Model");
		FileDialog.SetFilter(FILTER_MODEL);
		if(!FileDialog.SaveFile(Window, FileName))
		{
			Cancel = TRUE;
			return TRUE;
		}

		ModelFileName = FileName;
	}

	if(!ResourceLoader.SaveModel(Model, ModelFileName, Buffer)) return FALSE;
	if(!FileLoader.SaveToFile(ModelFileName, Buffer)) return FALSE;

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

	UpdateWindowStatus(TRUE);

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Saves the file if neccessary
//+-----------------------------------------------------------------------------
BOOL MAIN_WINDOW::SaveFileIfNeccessary(BOOL& Cancel)
{
	Cancel = FALSE;

	if(!ModelLoaded) return TRUE;
	if(ModelSaved) return TRUE;

	switch(MessageBoxEx(Window, "Model has not been saved!\nSave now?", "Message", MB_YESNOCANCEL | MB_ICONINFORMATION, CURRENT_LANGUAGE))
	{
		case IDYES:
		{
			return SaveFile(Cancel, FALSE);
		}

		case IDNO:
		{
			return TRUE;
		}

		case IDCANCEL:
		{
			Cancel = TRUE;
			return TRUE;
		}
	}

	Error.SetMessage("Unexpected code reached!");
	return FALSE;
}


//+-----------------------------------------------------------------------------
//| Closes the file
//+-----------------------------------------------------------------------------
BOOL MAIN_WINDOW::CloseFile(BOOL NoWindowHide)
{
	Model.Clear();

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

	ModelFileName = "";

	WINDOW_DIALOG::CloseAllOpenDialogs();

	AnimationWindow.ClearAllAnimations();
	NodeManagerWindow.ClearAllNodes();
	CameraManagerWindow.ClearAllNames();
	GeosetManagerWindow.ClearAllNames();
	GeosetAnimationManagerWindow.ClearAllNames();
	TextureManagerWindow.ClearAllNames();
	TextureAnimationManagerWindow.ClearAllNames();
	MaterialManagerWindow.ClearAllNames();
	SequenceManagerWindow.ClearAllNames();
	GlobalSequenceManagerWindow.ClearAllNames();

	Camera.SetDefaultDefaults();
	TextureManager.Clear();
	UpdateWindowStatus(NoWindowHide);

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Creates a new loading screen model
//+-----------------------------------------------------------------------------
BOOL MAIN_WINDOW::NewLoadingScreen(CONST std::string& TextureFileName)
{
	CloseFile(TRUE);

	if(!TextureManager.Load(TextureFileName)) return FALSE;
	if(!Model.CreateLoadingScreenModel(TextureFileName)) return FALSE;

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

	ModelFileName = "LoadingScreen.mdl";

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

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Displays the help file
//+-----------------------------------------------------------------------------
BOOL MAIN_WINDOW::DisplayHelp()
{
	std::string FileName;
	std::string FileNameAndPath;
	SHELLEXECUTEINFO Info;

	FileName = "War3ModelEditor.chm";
	FileNameAndPath = Common.GetProgramDirectory() + "\\" + FileName;

	ZeroMemory(&Info, sizeof(SHELLEXECUTEINFO));
	Info.cbSize = sizeof(SHELLEXECUTEINFO);
	Info.fMask = SEE_MASK_NOCLOSEPROCESS;
	Info.hwnd = Window;
	Info.lpVerb = "open";
	Info.lpFile = FileNameAndPath.c_str();
	Info.hInstApp = GetModuleHandle(NULL);
	Info.nShow = SW_SHOW;

	if(!ShellExecuteEx(&Info))
	{
		Error.SetMessage("Unable to open \"" + FileName + "\"!");
		return FALSE;
	}

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Calculates the extents of all model components
//+-----------------------------------------------------------------------------
BOOL MAIN_WINDOW::CalculateExtents()
{
	INT i;
	FLOAT Min;
	FLOAT Max;
	EXTENT Extent;
	EXTENT TempExtent;

	Max = std::numeric_limits<FLOAT>::max();
	Min = -Max;

	Extent.Radius = 0.0f;
	Extent.Min = D3DXVECTOR3(Max, Max, Max);
	Extent.Max = D3DXVECTOR3(Min, Min, Min);

	if(MessageBox(Window, "This will calculate the extents of all model components. Proceed?\n(It may destroy existing extents)", "Message", MB_YESNO | MB_ICONQUESTION) == IDNO) return TRUE;

	for(i = 0; i < Model.Data().GeosetContainer.GetTotalSize(); i++)
	{
		if(Model.Data().GeosetContainer.ValidIndex(i))
		{
			Model.Data().GeosetContainer[i]->CalculateExtent(TempExtent);

			if(TempExtent.Radius > Extent.Radius) Extent.Radius = TempExtent.Radius;
			if(TempExtent.Min.x < Extent.Min.x) Extent.Min.x = TempExtent.Min.x;
			if(TempExtent.Min.y < Extent.Min.y) Extent.Min.y = TempExtent.Min.y;
			if(TempExtent.Min.z < Extent.Min.z) Extent.Min.z = TempExtent.Min.z;
			if(TempExtent.Max.x > Extent.Max.x) Extent.Max.x = TempExtent.Max.x;
			if(TempExtent.Max.y > Extent.Max.y) Extent.Max.y = TempExtent.Max.y;
			if(TempExtent.Max.z > Extent.Max.z) Extent.Max.z = TempExtent.Max.z;
		}
	}

	for(i = 0; i < Model.Data().SequenceContainer.GetTotalSize(); i++)
	{
		if(Model.Data().SequenceContainer.ValidIndex(i))
		{
			Model.Data().SequenceContainer[i]->Data().Extent = Extent;
		}
	}

	Model.Data().Info.Extent = Extent;

	MakeModelUnsaved();

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Updates the window status
//+-----------------------------------------------------------------------------
VOID MAIN_WINDOW::UpdateWindowStatus(BOOL NoWindowHide)
{
	BOOL Gray;
	std::string Title;

	Gray = !ModelLoaded;

	GrayMenuItem(MainFileSave, Gray);
	GrayMenuItem(MainFileSaveAs, Gray);
	GrayMenuItem(MainFileClose, Gray);
	GrayMenuItem(MainViewResetCamera, Gray);
	GrayMenuItem(MainEditCalculateExtents, Gray);
	GrayMenuItem(MainEditModelProperties, Gray);
	GrayMenuItem(MainEditModelInfo, Gray);
	GrayMenuItem(MainWindowsModelEditor, Gray);
	GrayMenuItem(MainWindowsAnimationController, Gray);
	GrayMenuItem(MainWindowsNodeManager, Gray);
	GrayMenuItem(MainWindowsCameraManager, Gray);
	GrayMenuItem(MainWindowsGeosetManager, Gray);
	GrayMenuItem(MainWindowsGeosetAnimationManager, Gray);
	GrayMenuItem(MainWindowsTextureManager, Gray);
	GrayMenuItem(MainWindowsTextureAnimationManager, Gray);
	GrayMenuItem(MainWindowsMaterialManager, Gray);
	GrayMenuItem(MainWindowsSequenceManager, Gray);
	GrayMenuItem(MainWindowsGlobalSequenceManager, Gray);

	//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
	//GrayMenuItem(MainWindowsModelEditor, TRUE);

	if(Gray && !NoWindowHide)
	{
		ModelWindow.Hide();
		AnimationWindow.Hide();
		NodeManagerWindow.Hide();
		CameraManagerWindow.Hide();
		GeosetManagerWindow.Hide();
		GeosetAnimationManagerWindow.Hide();
		TextureWindow.Hide();
		TextureManagerWindow.Hide();
		TextureAnimationManagerWindow.Hide();
		MaterialManagerWindow.Hide();
		SequenceManagerWindow.Hide();
		GlobalSequenceManagerWindow.Hide();
	}

	Title = EDITOR_NAME;
	if(ModelLoaded)
	{
		Title += (" (" + Common.GetFileName(ModelFileName) + ")");
		if(!ModelSaved) Title += " *";
	}

	SetText(Title);
}


//+-----------------------------------------------------------------------------
//| Renders the window
//+-----------------------------------------------------------------------------
VOID MAIN_WINDOW::Render(INT TimeDifference)
{
	if(!ModelLoaded)
	{
		Graphics.RenderFill(PROPERTIES_NO_BACKGROUND);
		return;
	}

	Graphics.RenderFill(Properties().Background);
	Graphics.RenderGroundTexture();

	Model.Render(TimeDifference);
	ParticleManager.Render();

	Graphics.RenderAxises();
	Graphics.RenderDebug();
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久九九久久九九| 精品不卡在线视频| 免费的成人av| 国产精品电影一区二区| 欧美性大战xxxxx久久久| 狠狠色狠狠色合久久伊人| 亚洲精品日韩综合观看成人91| 欧美一区日韩一区| www.av亚洲| 国内精品久久久久影院色| 亚洲国产精品久久人人爱 | 9人人澡人人爽人人精品| 日日摸夜夜添夜夜添亚洲女人| 国产精品天美传媒| 欧美xxxxx牲另类人与| 欧美无乱码久久久免费午夜一区| 东方欧美亚洲色图在线| 久久99精品久久久久婷婷| 一区二区激情视频| 国产精品久久久久久久久搜平片 | 国产福利精品导航| 日韩电影在线看| 一区二区三区四区不卡在线| 国产欧美一区二区精品性色| 欧美男同性恋视频网站| 色哦色哦哦色天天综合| av电影在线不卡| 高潮精品一区videoshd| 国产精品自在欧美一区| 蜜臀国产一区二区三区在线播放| 亚洲伊人伊色伊影伊综合网| 尤物视频一区二区| 亚洲欧美色图小说| 欧美国产精品久久| 国产免费成人在线视频| 中文字幕欧美日韩一区| 国产色产综合产在线视频| 久久免费午夜影院| 精品日韩欧美在线| 欧美变态tickle挠乳网站| 欧美成人性战久久| 日韩你懂的在线播放| 精品欧美一区二区久久| 精品欧美一区二区久久| 亚洲精品一区在线观看| 欧美精品一区二区三区一线天视频| 欧美成人a视频| 久久这里只有精品首页| 国产女主播在线一区二区| 久久久久久免费毛片精品| 久久精品这里都是精品| 欧美国产日韩亚洲一区| 日韩一区在线播放| 亚洲丝袜制服诱惑| 亚洲高清视频中文字幕| 日本女人一区二区三区| 久久99热99| 福利电影一区二区| 色哟哟欧美精品| 欧美精品粉嫩高潮一区二区| 日韩欧美一二三区| 久久久久99精品一区| 欧美国产综合一区二区| 亚洲免费av网站| 亚洲国产精品嫩草影院| 久久精品噜噜噜成人av农村| 高清久久久久久| 日本道色综合久久| 91精品国产乱码久久蜜臀| 久久久久九九视频| 一区二区三区精品视频在线| 麻豆久久久久久久| 成人免费看的视频| 在线视频中文字幕一区二区| 日韩三级.com| 国产精品九色蝌蚪自拍| 亚洲一区二区三区四区不卡| 久久国产剧场电影| av在线一区二区三区| 欧美疯狂性受xxxxx喷水图片| 久久综合五月天婷婷伊人| 日韩伦理av电影| 麻豆精品视频在线观看视频| 91视频在线观看免费| 欧美精品欧美精品系列| 亚洲国产精品v| 婷婷六月综合网| 风流少妇一区二区| 欧美精选一区二区| 国产精品免费av| 日本美女一区二区三区视频| 99re这里只有精品视频首页| 91精品久久久久久久99蜜桃 | 欧美亚洲综合久久| 久久精品亚洲精品国产欧美 | 欧美mv日韩mv国产网站app| 中文字幕高清不卡| 日韩一区欧美二区| 成人97人人超碰人人99| 欧美日韩国产一级片| 欧美国产丝袜视频| 麻豆91精品91久久久的内涵| 91精品1区2区| 国产婷婷色一区二区三区| 首页国产欧美日韩丝袜| 成人av在线电影| 精品国产一二三| 青青青伊人色综合久久| 92精品国产成人观看免费 | 久久婷婷国产综合国色天香 | 青青草国产成人av片免费| 91社区在线播放| 久久精品视频在线看| 日本亚洲天堂网| 在线看一区二区| 国产精品国产三级国产三级人妇| 国产一区二区三区不卡在线观看| 欧美精品色一区二区三区| 亚洲精品欧美在线| 99免费精品在线观看| 久久精品亚洲国产奇米99| 老汉av免费一区二区三区 | 精品99一区二区| 秋霞午夜av一区二区三区| 欧美亚洲高清一区| 亚洲三级小视频| a亚洲天堂av| 中文字幕一区二区三区视频| 国产福利电影一区二区三区| 国产午夜精品久久| 国产一区二区主播在线| 精品国产乱码久久久久久图片| 三级不卡在线观看| 91.麻豆视频| 丝袜亚洲精品中文字幕一区| 欧美日韩国产一级| 视频一区二区不卡| 欧美精品三级在线观看| 日本麻豆一区二区三区视频| 日韩一区二区三区高清免费看看| 蜜臀av一区二区在线免费观看 | 亚洲欧洲综合另类| 一本色道久久综合亚洲91| 中文字幕一区免费在线观看| 波多野结衣的一区二区三区| 亚洲欧洲日本在线| 91国产成人在线| 亚洲电影在线免费观看| 欧美一区二区黄| 精品一区二区精品| 国产欧美一区二区三区沐欲| 成人久久久精品乱码一区二区三区 | 精品视频全国免费看| 亚洲人成网站在线| 欧美日韩三级视频| 丝瓜av网站精品一区二区| 91精品国产aⅴ一区二区| 麻豆成人综合网| 国产视频在线观看一区二区三区| 国产成人av电影免费在线观看| 日韩视频一区二区三区在线播放| 国模少妇一区二区三区| 日本一区二区免费在线观看视频| 高清不卡在线观看av| 亚洲三级免费观看| 欧美绝品在线观看成人午夜影视| 免费不卡在线观看| 国产日产精品一区| 色婷婷亚洲婷婷| 日韩电影在线观看一区| 国产午夜精品福利| 欧美中文一区二区三区| 青青草国产精品亚洲专区无| 国产午夜精品福利| 99久久精品免费看| 日本视频在线一区| 中文一区一区三区高中清不卡| 色8久久精品久久久久久蜜| 日韩国产精品久久| 欧美激情综合五月色丁香小说| 欧美在线影院一区二区| 免费观看在线综合色| 国产精品日韩成人| 在线综合亚洲欧美在线视频| 国产高清无密码一区二区三区| 一区二区三区久久| 精品久久久久久久久久久久久久久久久| 成人爽a毛片一区二区免费| 亚洲第一激情av| 日本一区二区视频在线| 4438x成人网最大色成网站| 国产成人午夜精品5599| 婷婷亚洲久悠悠色悠在线播放| 国产欧美日韩另类一区| 在线观看91精品国产麻豆| 99久久婷婷国产综合精品| 麻豆精品一区二区综合av| 亚洲午夜国产一区99re久久| 国产日韩欧美激情| 91精品国产综合久久蜜臀|