nodemanager.cpp
来自「3D游戏展示程序」· C++ 代码 · 共 93 行
CPP
93 行
//--------------------------------------------------
// Desc: 节点指针管理
// Author: artsylee/2007.3.22
//--------------------------------------------------
#include "NodeManager.h"
#include "GNode.h"
//--------------------------------------------------
// 关于节点指针管理
// 1, 为了在游戏中能调出控制台动态调整指定节点属性,
// 需要保存游戏中所有的节点指针.
// 2, 指针的获取在节点GNode的构造函数中.
// 3, 指针的消失在节点GNode的析构函数中.
// 4, 指针有栈指针和堆指针, 此类不负责申请和释放, 只
// 是记录当前会用到的节点.
//--------------------------------------------------
CNodeManager::CNodeManager()
{
m_NodeVec.clear();
}
CNodeManager::~CNodeManager()
{
m_NodeVec.clear();
}
void CNodeManager::AddNode(GNode* pNode)
{
std::vector<GNode*>::iterator itor = m_NodeVec.begin();
while(itor != m_NodeVec.end())
{
if(*itor == pNode)
return;
itor++;
}
m_NodeVec.push_back(pNode);
}
void CNodeManager::RemoveNode(GNode* pNode)
{
std::vector<GNode*>::iterator itor = m_NodeVec.begin();
while(itor != m_NodeVec.end())
{
if(*itor == pNode)
{
m_NodeVec.erase(itor);
return;
}
itor++;
}
}
void CNodeManager::RemoveAll(void)
{
m_NodeVec.clear();
}
GNode* CNodeManager::GetNode(char *pName)
{
_strlwr(pName);
std::vector<GNode*>::iterator itor = m_NodeVec.begin();
while(itor != m_NodeVec.end())
{
char szName[256];
(*itor)->GetName(szName);
_strlwr(szName);
if(strcmp(szName, pName)==0)
{
return (*itor);
}
itor++;
}
return NULL;
}
GNode* CNodeManager::GetNodeByPos(int pos)
{
std::vector<GNode*>::iterator itor = m_NodeVec.begin()+pos;
if(itor != m_NodeVec.end())
{
return (*itor);
}
else
return NULL;
}
size_t CNodeManager::GetSize(void)
{
return m_NodeVec.size();
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?