使用了幾天GOOF,發(fā)現(xiàn)他存在很多bug啊,什么緩存溢出,數(shù)組越界之類的。。很明顯這個(gè)框架沒(méi)有真正用在一個(gè)項(xiàng)目上的。我列舉幾個(gè)大問(wèn)題吧。好讓大家別到處碰壁。
bool EnvironmentGameSystem::save(DataElementPtr element)這個(gè)函數(shù)沒(méi)有實(shí)現(xiàn),所以無(wú)法保存環(huán)境信息。
還有
void GridPartition::enumerateConnectedPartitions(vector<CorePartition*>& connected)
{
//get surrounding grid cells within a certain radius
float loadRadius = mGridPartitionMgr->getGridCellLoadRadius();
//enumerate partitions
vector<CorePartition*> partitions;
mGridPartitionMgr->enumeratePartitions(partitions);
//iterate through and check distance
for(vector<CorePartition*>::iterator itr = partitions.begin(); itr != partitions.end(); ++itr)
{
float distance = Vector3(getWorldPosition() - (*itr)->getWorldPosition()).length();
// add by 李錦俊 2007-7-16
// 不要返回自己作為鄰居,會(huì)產(chǎn)生bug
if(distance < loadRadius && *itr != this)
connected.push_back(*itr);
}
}
再給出一個(gè)比較嚴(yán)重的bug
GOOFTranslationManipulator.h中的
// add by 李錦俊 2007-7-12
// 不要用魔術(shù)數(shù),搞到緩存溢出
SceneNode* mNode[AT_LAST];
Entity* mEnt[AT_LAST];
Entity* mConeEnt[AT_LAST];
CollisionShapePtr mCol[AT_LAST];
AxisManipulatorHandle* mHandle[AT_LAST];
另外,CorePartition中的setSkyboxMaterial、setGlobalAmbient之類的代碼貌似沒(méi)用。準(zhǔn)備棄之。
// add by 李錦俊 2007-7-16
// 這個(gè)算法暫時(shí)有問(wèn)題,先屏蔽,以后再慢慢解決
//disable static geometry until it is fixed
if(false)// getStaticGeometryRule() == SGR_ALWAYS || (getStaticGeometryRule() == SGR_WHEN_NOT_PROX_IMMEDIATE && getPartition()->getProximity() != CorePartition::PROX_IMMEDIATE))
{
willConvertToStaticGeometry = true;
getPartition()->addObjectToConvertToStaticGeometry(this);
}