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

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

?? nodemanagerwindow.cpp

?? 骨骼動畫....把魔獸模型解出的代碼..
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
//+-----------------------------------------------------------------------------
VOID NODE_MANAGER_WINDOW::RemoveNode(MODEL_BASE* Node)
{
	TreeView_DeleteItem(TreeView.GetWindow(), Node->BaseData()->TreeViewItem);
	Node->BaseData()->TreeViewItem = NULL;
}


//+-----------------------------------------------------------------------------
//| Clears all nodes
//+-----------------------------------------------------------------------------
VOID NODE_MANAGER_WINDOW::ClearAllNodes()
{
	TreeView.Clear();
}


//+-----------------------------------------------------------------------------
//| Returns the current parent node
//+-----------------------------------------------------------------------------
MODEL_BASE* NODE_MANAGER_WINDOW::GetCurrentParent()
{
	if(CurrentlySelectedNode == NULL) return NULL;

	return CurrentlySelectedNode;
}


//+-----------------------------------------------------------------------------
//| Creates a new attachment
//+-----------------------------------------------------------------------------
BOOL NODE_MANAGER_WINDOW::CreateNewAttachment()
{
	MODEL_ATTACHMENT* Attachment;

	Attachment = new MODEL_ATTACHMENT();
	if(Attachment == NULL)
	{
		Error.SetMessage("Unable to create a new attachment, memory allocation failed!");
		return FALSE;
	}

	if(!Model.AddAttachment(Attachment, GetCurrentParent()))
	{
		delete Attachment;
		return FALSE;
	}

	MainWindow.MakeModelUnsaved();

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Creates a new bone
//+-----------------------------------------------------------------------------
BOOL NODE_MANAGER_WINDOW::CreateNewBone()
{
	MODEL_BONE* Bone;

	Bone = new MODEL_BONE();
	if(Bone == NULL)
	{
		Error.SetMessage("Unable to create a new bone, memory allocation failed!");
		return FALSE;
	}

	if(!Model.AddBone(Bone, GetCurrentParent()))
	{
		delete Bone;
		return FALSE;
	}

	MainWindow.MakeModelUnsaved();

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Creates a new collision shape
//+-----------------------------------------------------------------------------
BOOL NODE_MANAGER_WINDOW::CreateNewCollisionShape()
{
	MODEL_COLLISION_SHAPE* CollisionShape;

	CollisionShape = new MODEL_COLLISION_SHAPE();
	if(CollisionShape == NULL)
	{
		Error.SetMessage("Unable to create a new collision shape, memory allocation failed!");
		return FALSE;
	}

	if(!Model.AddCollisionShape(CollisionShape, GetCurrentParent()))
	{
		delete CollisionShape;
		return FALSE;
	}

	MainWindow.MakeModelUnsaved();

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Creates a new event object
//+-----------------------------------------------------------------------------
BOOL NODE_MANAGER_WINDOW::CreateNewEventObject()
{
	MODEL_EVENT_OBJECT* EventObject;

	EventObject = new MODEL_EVENT_OBJECT();
	if(EventObject == NULL)
	{
		Error.SetMessage("Unable to create a new event object, memory allocation failed!");
		return FALSE;
	}

	if(!Model.AddEventObject(EventObject, GetCurrentParent()))
	{
		delete EventObject;
		return FALSE;
	}

	MainWindow.MakeModelUnsaved();

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Creates a new helper
//+-----------------------------------------------------------------------------
BOOL NODE_MANAGER_WINDOW::CreateNewHelper()
{
	MODEL_HELPER* Helper;

	Helper = new MODEL_HELPER();
	if(Helper == NULL)
	{
		Error.SetMessage("Unable to create a new helper, memory allocation failed!");
		return FALSE;
	}

	if(!Model.AddHelper(Helper, GetCurrentParent()))
	{
		delete Helper;
		return FALSE;
	}

	MainWindow.MakeModelUnsaved();

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Creates a new light
//+-----------------------------------------------------------------------------
BOOL NODE_MANAGER_WINDOW::CreateNewLight()
{
	MODEL_LIGHT* Light;

	Light = new MODEL_LIGHT();
	if(Light == NULL)
	{
		Error.SetMessage("Unable to create a new light, memory allocation failed!");
		return FALSE;
	}

	if(!Model.AddLight(Light, GetCurrentParent()))
	{
		delete Light;
		return FALSE;
	}

	MainWindow.MakeModelUnsaved();

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Creates a new particle emitter
//+-----------------------------------------------------------------------------
BOOL NODE_MANAGER_WINDOW::CreateNewParticleEmitter()
{
	MODEL_PARTICLE_EMITTER* ParticleEmitter;

	ParticleEmitter = new MODEL_PARTICLE_EMITTER();
	if(ParticleEmitter == NULL)
	{
		Error.SetMessage("Unable to create a new particle emitter, memory allocation failed!");
		return FALSE;
	}

	if(!Model.AddParticleEmitter(ParticleEmitter, GetCurrentParent()))
	{
		delete ParticleEmitter;
		return FALSE;
	}

	MainWindow.MakeModelUnsaved();

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Creates a new particle emitter 2
//+-----------------------------------------------------------------------------
BOOL NODE_MANAGER_WINDOW::CreateNewParticleEmitter2()
{
	MODEL_PARTICLE_EMITTER_2* ParticleEmitter2;

	ParticleEmitter2 = new MODEL_PARTICLE_EMITTER_2();
	if(ParticleEmitter2 == NULL)
	{
		Error.SetMessage("Unable to create a new particle emitter 2, memory allocation failed!");
		return FALSE;
	}

	if(!Model.AddParticleEmitter2(ParticleEmitter2, GetCurrentParent()))
	{
		delete ParticleEmitter2;
		return FALSE;
	}

	MainWindow.MakeModelUnsaved();

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Creates a new ribbon emitter
//+-----------------------------------------------------------------------------
BOOL NODE_MANAGER_WINDOW::CreateNewRibbonEmitter()
{
	MODEL_RIBBON_EMITTER* RibbonEmitter;

	RibbonEmitter = new MODEL_RIBBON_EMITTER();
	if(RibbonEmitter == NULL)
	{
		Error.SetMessage("Unable to create a new ribbon emitter, memory allocation failed!");
		return FALSE;
	}

	if(!Model.AddRibbonEmitter(RibbonEmitter, GetCurrentParent()))
	{
		delete RibbonEmitter;
		return FALSE;
	}

	MainWindow.MakeModelUnsaved();

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Edits an existing attachment
//+-----------------------------------------------------------------------------
BOOL NODE_MANAGER_WINDOW::EditAttachment(MODEL_ATTACHMENT* Attachment)
{
	if(!AttachmentDialog.Display(Window, Attachment->Data())) return TRUE;

	MainWindow.MakeModelUnsaved();

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Edits an existing bone
//+-----------------------------------------------------------------------------
BOOL NODE_MANAGER_WINDOW::EditBone(MODEL_BONE* Bone)
{
	MODEL_GEOSET* Geoset;
	MODEL_GEOSET_ANIMATION* GeosetAnimation;

	Geoset = Bone->GeosetNode.IsAttached() ? Bone->GeosetNode.GetObjectData() : NULL;
	GeosetAnimation = Bone->GeosetAnimationNode.IsAttached() ? Bone->GeosetAnimationNode.GetObjectData() : NULL;

	if(!BoneDialog.Display(Window, Bone->Data(), Geoset, GeosetAnimation)) return TRUE;

	if(Geoset != NULL)
	{
		Bone->GeosetNode.Attach(Geoset->BoneNodes);
	}
	else
	{
		Bone->GeosetNode.Detach();
	}

	if(GeosetAnimation != NULL)
	{
		Bone->GeosetAnimationNode.Attach(GeosetAnimation->BoneNodes);
	}
	else
	{
		Bone->GeosetAnimationNode.Detach();
	}

	MainWindow.MakeModelUnsaved();

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Edits an existing collision shape
//+-----------------------------------------------------------------------------
BOOL NODE_MANAGER_WINDOW::EditCollisionShape(MODEL_COLLISION_SHAPE* CollisionShape)
{
	if(!CollisionShapeDialog.Display(Window, CollisionShape->Data())) return TRUE;

	MainWindow.MakeModelUnsaved();

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Edits an existing event object
//+-----------------------------------------------------------------------------
BOOL NODE_MANAGER_WINDOW::EditEventObject(MODEL_EVENT_OBJECT* EventObject)
{
	std::string Name;
	MODEL_EVENT_OBJECT_DATA Data;
	MODEL_GLOBAL_SEQUENCE* GlobalSequence;

	Data = EventObject->Data();
	GlobalSequence = EventObject->GlobalSequenceNode.IsAttached() ? EventObject->GlobalSequenceNode.GetObjectData() : NULL;
	Name = Data.Name;

	if(!EventObjectDialog.Display(Window, Data, GlobalSequence)) return TRUE;

	if(Data.Name != Name)
	{
		TVITEM ItemInfo;

		ItemInfo.mask = TVIF_TEXT;
		ItemInfo.hItem = Data.TreeViewItem;
		ItemInfo.state = 0;
		ItemInfo.stateMask = 0;
		ItemInfo.pszText = const_cast<CHAR*>(Data.Name.c_str());
		ItemInfo.cchTextMax = static_cast<INT>(Data.Name.size());
		ItemInfo.iImage = 0;
		ItemInfo.iSelectedImage = 0;
		ItemInfo.cChildren = 0;
		ItemInfo.lParam = 0;

		TreeView_SetItem(TreeView.GetWindow(), &ItemInfo);
	}

	EventObject->Data() = Data;
	if(GlobalSequence != NULL)
	{
		EventObject->GlobalSequenceNode.Attach(GlobalSequence->EventObjectNodes);
	}
	else
	{
		EventObject->GlobalSequenceNode.Detach();
	}

	MainWindow.MakeModelUnsaved();

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Edits an existing helper
//+-----------------------------------------------------------------------------
BOOL NODE_MANAGER_WINDOW::EditHelper(MODEL_HELPER* Helper)
{
	if(!HelperDialog.Display(Window, Helper->Data())) return TRUE;

	MainWindow.MakeModelUnsaved();

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Edits an existing light
//+-----------------------------------------------------------------------------
BOOL NODE_MANAGER_WINDOW::EditLight(MODEL_LIGHT* Light)
{
	if(!LightDialog.Display(Window, Light->Data())) return TRUE;

	MainWindow.MakeModelUnsaved();

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Edits an existing particle emitter
//+-----------------------------------------------------------------------------
BOOL NODE_MANAGER_WINDOW::EditParticleEmitter(MODEL_PARTICLE_EMITTER* ParticleEmitter)
{
	if(!ParticleEmitterDialog.Display(Window, ParticleEmitter->Data())) return TRUE;

	MainWindow.MakeModelUnsaved();

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Edits an existing particle emitter 2
//+-----------------------------------------------------------------------------
BOOL NODE_MANAGER_WINDOW::EditParticleEmitter2(MODEL_PARTICLE_EMITTER_2* ParticleEmitter2)
{
	MODEL_TEXTURE* Texture;

	Texture = ParticleEmitter2->TextureNode.IsAttached() ? ParticleEmitter2->TextureNode.GetObjectData() : NULL;

	if(!ParticleEmitter2Dialog.Display(Window, ParticleEmitter2->Data(), Texture)) return TRUE;

	if(Texture != NULL)
	{
		ParticleEmitter2->TextureNode.Attach(Texture->ParticleEmitter2Nodes);
	}
	else
	{
		ParticleEmitter2->TextureNode.Detach();
	}

	MainWindow.MakeModelUnsaved();

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Edits an existing ribbon emitter
//+-----------------------------------------------------------------------------
BOOL NODE_MANAGER_WINDOW::EditRibbonEmitter(MODEL_RIBBON_EMITTER* RibbonEmitter)
{
	MODEL_MATERIAL* Material;

	Material = RibbonEmitter->MaterialNode.IsAttached() ? RibbonEmitter->MaterialNode.GetObjectData() : NULL;

	if(!RibbonEmitterDialog.Display(Window, RibbonEmitter->Data(), Material)) return TRUE;

	if(Material != NULL)
	{
		RibbonEmitter->MaterialNode.Attach(Material->RibbonEmitterNodes);
	}
	else
	{
		RibbonEmitter->MaterialNode.Detach();
	}

	MainWindow.MakeModelUnsaved();

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Moves a node up
//+-----------------------------------------------------------------------------
BOOL NODE_MANAGER_WINDOW::MoveUp()
{
	MODEL_BASE* Node;
	HTREEITEM Item;
	HTREEITEM InsertionPoint;

	Node = CurrentlySelectedNode;
	if(Node == NULL) return FALSE;

	Item = TreeView_GetPrevSibling(TreeView.GetWindow(), Node->BaseData()->TreeViewItem);
	if(Item == NULL)
	{
		Error.SetMessage("Cannot move the node upwards!");
		return FALSE;
	}

	InsertionPoint = TreeView_GetPrevSibling(TreeView.GetWindow(), Item);
	if(InsertionPoint == NULL) InsertionPoint = TVI_FIRST;

	RemoveNode(Node);
	AddNodeAndChildren(Node, InsertionPoint);

	TreeView_SelectItem(TreeView.GetWindow(), Node->BaseData()->TreeViewItem);
	MainWindow.MakeModelUnsaved();

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Moves a node down
//+-----------------------------------------------------------------------------
BOOL NODE_MANAGER_WINDOW::MoveDown()
{
	MODEL_BASE* Node;
	HTREEITEM Item;
	HTREEITEM InsertionPoint;

	Node = CurrentlySelectedNode;
	if(Node == NULL) return FALSE;

	Item = TreeView_GetNextSibling(TreeView.GetWindow(), Node->BaseData()->TreeViewItem);
	if(Item == NULL)
	{
		Error.SetMessage("Cannot move the node downwards!");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区美女视频| 国产日韩成人精品| 色网站国产精品| 国产成人啪午夜精品网站男同| 麻豆91在线观看| 久久不见久久见中文字幕免费| 婷婷六月综合亚洲| 亚洲不卡在线观看| 亚洲一区二区五区| 日韩精品亚洲专区| 日本大胆欧美人术艺术动态| 蜜臀久久99精品久久久久久9| 日本中文字幕一区| 精品一二线国产| 国产乱淫av一区二区三区| 国产麻豆精品一区二区| 成人午夜激情在线| 色婷婷激情综合| 欧美一区二区三区免费在线看| 日韩一区二区三区免费看 | 国产精品久久久久毛片软件| 国产精品动漫网站| 亚洲一线二线三线久久久| 奇米精品一区二区三区在线观看| 精品一二三四区| 粉嫩绯色av一区二区在线观看| 色菇凉天天综合网| 91麻豆精品国产自产在线| 亚洲精品一区二区三区福利| 国产精品入口麻豆原神| 亚洲第一会所有码转帖| 久久国产尿小便嘘嘘尿| av成人免费在线| 日韩写真欧美这视频| 中文文精品字幕一区二区| 亚洲午夜三级在线| 国产乱子轮精品视频| 欧美在线观看视频在线| 亚洲精品一区二区三区香蕉| 亚洲免费电影在线| 国产乱一区二区| 欧美色图片你懂的| 国产不卡视频一区| 欧美综合视频在线观看| 久久这里只有精品视频网| 亚洲视频一区二区在线观看| 日本亚洲最大的色成网站www| 岛国精品在线观看| 日韩欧美123| 一个色综合网站| 国产精品一区一区三区| 欧美精品国产精品| 中文字幕中文乱码欧美一区二区| 毛片基地黄久久久久久天堂| 色综合咪咪久久| 亚洲国产成人在线| 国产在线日韩欧美| 欧美一级一区二区| 一区二区三区国产豹纹内裤在线| 国产福利一区在线| 亚洲精品在线电影| 蜜桃视频一区二区| 欧美丰满少妇xxxxx高潮对白 | 久久99久久99| 这里只有精品免费| 午夜影院在线观看欧美| 一本到不卡精品视频在线观看 | jlzzjlzz亚洲日本少妇| 久久久久99精品国产片| 久久国产精品色| 日韩限制级电影在线观看| 免费成人在线网站| 欧美变态tickling挠脚心| 日韩精品成人一区二区三区| 91麻豆精品久久久久蜜臀| 日韩国产在线观看一区| 91精品黄色片免费大全| 秋霞电影一区二区| 欧美变态口味重另类| 韩日精品视频一区| 国产亚洲欧美日韩俺去了| 国产精品自拍av| 欧美韩国一区二区| 91丨porny丨蝌蚪视频| 一区二区三区中文在线| 欧美日本一道本| 久久机这里只有精品| 国产午夜三级一区二区三| 国产不卡免费视频| 亚洲欧美视频一区| 在线精品视频免费播放| 日本va欧美va精品发布| 欧美岛国在线观看| 国产成人亚洲综合a∨婷婷| 国产精品乱码一区二三区小蝌蚪| 99精品国产热久久91蜜凸| 亚洲一区在线播放| 91精品国产一区二区| 国产乱子伦一区二区三区国色天香 | 99这里只有久久精品视频| 亚洲欧美自拍偷拍色图| 欧美午夜免费电影| 久久电影网站中文字幕| 国产精品久久精品日日| 欧美唯美清纯偷拍| 激情综合网天天干| 自拍av一区二区三区| 欧美一区二区三区四区视频| 国产白丝精品91爽爽久久| 一级做a爱片久久| 欧美sm极限捆绑bd| jlzzjlzz国产精品久久| 美女视频黄免费的久久| 亚洲欧美电影一区二区| 日韩精品一区二区在线观看| 99re这里只有精品视频首页| 热久久久久久久| 亚洲乱码中文字幕综合| 欧美一区二区日韩| 97久久精品人人爽人人爽蜜臀| 日韩成人一区二区三区在线观看| 国产精品久久影院| 久久综合色8888| 欧美日韩国产精品自在自线| av在线不卡电影| 极品美女销魂一区二区三区| 亚洲国产精品久久不卡毛片| 国产精品伦理在线| 久久精品视频免费| 欧美xxx久久| 欧美日韩大陆在线| 一本色道a无线码一区v| 粉嫩在线一区二区三区视频| 久久精品理论片| 亚洲成人精品影院| 久久综合网色—综合色88| 26uuu色噜噜精品一区二区| 91视频.com| 国产在线看一区| 欧美a一区二区| 亚洲成av人影院| 亚洲精品成人精品456| 中文在线一区二区| 欧美精品一区二区三区四区| 欧美一级高清片| 91精品福利在线一区二区三区| 欧美丝袜丝交足nylons| 欧美优质美女网站| 色一区在线观看| 色婷婷狠狠综合| 91国模大尺度私拍在线视频 | 精品美女一区二区三区| 欧美一级欧美三级在线观看| 欧美日韩国产一级片| 欧美日韩的一区二区| 在线综合视频播放| xnxx国产精品| 国产性做久久久久久| 日本一区二区三区在线不卡| 国产人成一区二区三区影院| 国产人成亚洲第一网站在线播放| 国产精品少妇自拍| 亚洲欧美偷拍卡通变态| 亚洲高清久久久| 麻豆专区一区二区三区四区五区| 蜜桃视频一区二区三区| 国产一区二区三区综合| 成人丝袜视频网| 一本久久综合亚洲鲁鲁五月天| 欧美无人高清视频在线观看| 日韩区在线观看| 国产日韩欧美一区二区三区综合| 中文字幕不卡在线| 亚洲综合激情另类小说区| 天堂一区二区在线免费观看| 麻豆精品一区二区综合av| 国产不卡视频在线观看| 91久久一区二区| 日韩视频一区二区| 亚洲欧美自拍偷拍| 偷拍日韩校园综合在线| 国产麻豆精品久久一二三| 色婷婷亚洲一区二区三区| 91精品国产高清一区二区三区蜜臀| 欧美v亚洲v综合ⅴ国产v| 国产精品国产馆在线真实露脸 | 国产日韩在线不卡| 一区二区三区在线影院| 蜜桃av噜噜一区| 99久久免费精品高清特色大片| 欧美日韩精品一区视频| 国产女主播一区| 亚洲成人激情综合网| 国产成人免费视频一区| 在线观看日产精品| 久久久久国产精品免费免费搜索 | 欧美一级国产精品| 亚洲天堂成人在线观看| 极品少妇一区二区| 欧美日韩美少妇|