void _XControlManager::draw(const void * obj) //手动描绘某个物体 { if(m_isAutoDraw != 0) return; if(findObjectID(obj) < 0) return; ((_XControlBasic *)obj)->draw(); ((_XControlBasic *)obj)->drawUp(); }
int _XObjectManager::addAObject(void * object,_XObjectType type) { // if(!m_isInited) return -1; if(m_nowObjectSum >= MAX_OBJECT_SUM) return -1; //物件已经满了,注册失败 if(type == OBJ_NULL) return -1; //无效的物件不能注册 if(object == NULL) return -1; int ret = findObjectID(object); if(ret >= 0) return ret; //如果物件已经注册,则防止重复注册 //下面开始注册动作 m_objectMouseState[m_nowObjectSum] = OBJ_STATE_NULL; //默认状态 //m_objectUpMouseState[m_nowObjectSum] = OBJ_STATE_NULL; //默认状态 m_pObject[m_nowObjectSum] = object; //初始化指针无效 m_objectType[m_nowObjectSum] = type; //无效的物件类型 m_objectMousePoint[m_nowObjectSum].set(0.0f,0.0f); m_objectKeyOption[m_nowObjectSum] = OBJ_OPTION_NULL; m_objectSetState[m_nowObjectSum] = OBJ_OPTION_STATE_NULL; m_objectEditParm[m_nowObjectSum] = -1; //初始化物件的状态 m_objCanEdit[m_nowObjectSum] = XFalse; //不可编辑 m_objBeSelect[m_nowObjectSum] = XFalse; //不被选择 ++ m_nowObjectSum; //printf("ObjectSum:%d\n",m_nowObjectSum); return m_nowObjectSum - 1; }
XBool XCtrlManagerBase::addAFunction(void (* function)()) //注册一个物件,返回注册的ID,实际上是序列编号,-1为注册失败 { if(findObjectID(function) >= 0) return XFalse; //防止物件重复注册 XCtrlObjetInfo tmp; tmp.pFunction = function; m_ctrlDrawOrderMap.push_back(m_ctrlObjInfos.size()); m_ctrlObjInfos.push_back(tmp); // printf("add one ctrl obj:%d\n",m_objectSum - 1); return XTrue; }
int _XControlManager::addAObject(void (* function)()) //注册一个物件,返回注册的ID,实际上是序列编号,-1为注册失败 { if(m_objectSum >= MAX_CTRL_OBJ_SUM) return 0; //物件的数量已经超过上限了 if(findObjectID(function) >= 0) return 0; //防止物件重复注册 m_pObject[m_objectSum].pFunction = function; m_objectType[m_objectSum] = CTRL_OBJ_FUNCTION; m_objectDrawOrderMap[m_objectSum] = m_objectSum; ++ m_objectSum; // printf("add one ctrl obj:%d\n",m_objectSum - 1); return 1; }
int _XControlManager::addAObject(void * object,_XCtrlObjType type) { if(m_objectSum >= MAX_CTRL_OBJ_SUM) return 0; //物件的数量已经超过上限了 if(findObjectID(object) >= 0) return 0; //防止物件重复注册 m_pObject[m_objectSum].pObject = object; m_objectType[m_objectSum] = type; m_objectDrawOrderMap[m_objectSum] = m_objectSum; ++ m_objectSum; // printf("add one ctrl obj:%d\n",m_objectSum - 1); return 1; }
XBool XCtrlManagerBase::addACtrl(XControlBasic* object) { if(object == NULL) return XFalse; if(object->m_ctrlSpecialType == CTRL_TYPE_NORMAL) { if(findObjectID(object) >= 0) return XFalse; //防止物件重复注册 XCtrlObjetInfo tmp; tmp.pObject = object; tmp.needInput = XTrue; tmp.needDraw = XTrue; m_ctrlDrawOrderMap.push_back(m_ctrlObjInfos.size()); m_ctrlObjInfos.push_back(tmp); // printf("add one ctrl obj:%d\n",m_objectSum - 1); }else { if(findSpecialObjectID(object) >= 0) return XFalse; m_specialCtrls.push_back(object); } return XTrue; }