⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nodeicon.cpp

📁 骨骼动画....把魔兽模型解出的代码..
💻 CPP
字号:
//+-----------------------------------------------------------------------------
//| Included files
//+-----------------------------------------------------------------------------
#include "NodeIcon.h"


//+-----------------------------------------------------------------------------
//| Global objects
//+-----------------------------------------------------------------------------
NODE_ICON NodeIcon;


//+-----------------------------------------------------------------------------
//| Constructor
//+-----------------------------------------------------------------------------
NODE_ICON::NODE_ICON()
{
	NodeIconCollection = NULL;
}


//+-----------------------------------------------------------------------------
//| Destructor
//+-----------------------------------------------------------------------------
NODE_ICON::~NODE_ICON()
{
	ClearAllIcons();
}


//+-----------------------------------------------------------------------------
//| Clears all icons
//+-----------------------------------------------------------------------------
VOID NODE_ICON::ClearAllIcons()
{
	NodeIconInfoMap.clear();

	if(NodeIconCollection != NULL)
	{
		ImageList_Destroy(NodeIconCollection);
		NodeIconCollection = NULL;
	}
}


//+-----------------------------------------------------------------------------
//| Loads all icons
//+-----------------------------------------------------------------------------
BOOL NODE_ICON::LoadAllIcons()
{
	INT Index;
	std::map<NODE_TYPE, NODE_ICON_INFO>::iterator i;

	if(!LoadIconFromResource(NODE_TYPE_NONE, IconBone)) return FALSE;
	if(!LoadIconFromResource(NODE_TYPE_ATTACHMENT, IconAttachment)) return FALSE;
	if(!LoadIconFromResource(NODE_TYPE_BONE, IconBone)) return FALSE;
	if(!LoadIconFromResource(NODE_TYPE_EVENT_OBJECT, IconEventObject)) return FALSE;
	if(!LoadIconFromResource(NODE_TYPE_COLLISION_SHAPE, IconCollisionShape)) return FALSE;
	if(!LoadIconFromResource(NODE_TYPE_HELPER, IconHelper)) return FALSE;
	if(!LoadIconFromResource(NODE_TYPE_LIGHT, IconLight)) return FALSE;
	if(!LoadIconFromResource(NODE_TYPE_PARTICLE_EMITTER, IconParticleEmitter)) return FALSE;
	if(!LoadIconFromResource(NODE_TYPE_PARTICLE_EMITTER_2, IconParticleEmitter2)) return FALSE;
	if(!LoadIconFromResource(NODE_TYPE_RIBBON_EMITTER, IconRibbonEmitter)) return FALSE;
	
	NodeIconCollection = ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), ILC_COLOR8 | ILC_MASK, 1, 1);
	if(NodeIconCollection == NULL)
	{
		Error.SetMessage("Unable to create a node icon list!");
		return FALSE;
	}

	i = NodeIconInfoMap.begin();
	while(i != NodeIconInfoMap.end())
	{
		Index = ImageList_AddIcon(NodeIconCollection, i->second.Icon);
		if(Index == -1)
		{
			Error.SetMessage("Unable to add icons to the icon list!");
			return FALSE;
		}

		i->second.IconCollectionIndex = Index;

		i++;
	}

	return TRUE;
}


//+-----------------------------------------------------------------------------
//| Returns the icon index of a specific node
//+-----------------------------------------------------------------------------
INT NODE_ICON::GetIconIndex(NODE_TYPE NodeType) CONST
{
	std::map<NODE_TYPE, NODE_ICON_INFO>::const_iterator i;
	
	i = NodeIconInfoMap.find(NodeType);
	if(i == NodeIconInfoMap.end()) return 0;

	return i->second.IconCollectionIndex;
}


//+-----------------------------------------------------------------------------
//| Assigns the icon list to a treeview
//+-----------------------------------------------------------------------------
VOID NODE_ICON::AssignIconListToTreeView(HWND TreeView)
{
	TreeView_SetImageList(TreeView, NodeIconCollection, TVSIL_NORMAL);
}


//+-----------------------------------------------------------------------------
//| Loads an icon from a resource
//+-----------------------------------------------------------------------------
BOOL NODE_ICON::LoadIconFromResource(NODE_TYPE NodeType, UINT ResourceId)
{
	NODE_ICON_INFO NodeIconInfo;

	NodeIconInfo.Icon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(ResourceId));
	if(NodeIconInfo.Icon == NULL)
	{
		Error.SetMessage("Unable to load the node icon!");
		return FALSE;
	}

	NodeIconInfoMap.insert(std::make_pair(NodeType, NodeIconInfo));

	return TRUE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -