使用了幾天GOOF,發(fā)現(xiàn)他存在很多bug啊,什么緩存溢出,數(shù)組越界之類的。。很明顯這個框架沒有真正用在一個項目上的。我列舉幾個大問題吧。好讓大家別到處碰壁。
bool EnvironmentGameSystem::save(DataElementPtr element)這個函數(shù)沒有實現(xiàn),所以無法保存環(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
// 不要返回自己作為鄰居,會產(chǎn)生bug
if(distance < loadRadius && *itr != this)
connected.push_back(*itr);
}
}
再給出一個比較嚴(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之類的代碼貌似沒用。準(zhǔn)備棄之。
// add by 李錦俊 2007-7-16
// 這個算法暫時有問題,先屏蔽,以后再慢慢解決
//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);
}