使用了幾天GOOF,發現他存在很多bug啊,什么緩存溢出,數組越界之類的。。很明顯這個框架沒有真正用在一個項目上的。我列舉幾個大問題吧。好讓大家別到處碰壁。
bool EnvironmentGameSystem::save(DataElementPtr element)這個函數沒有實現,所以無法保存環境信息。
還有
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
// 不要返回自己作為鄰居,會產生bug
if(distance < loadRadius && *itr != this)
connected.push_back(*itr);
}
}
再給出一個比較嚴重的bug
GOOFTranslationManipulator.h中的
// add by 李錦俊 2007-7-12
// 不要用魔術數,搞到緩存溢出
SceneNode* mNode[AT_LAST];
Entity* mEnt[AT_LAST];
Entity* mConeEnt[AT_LAST];
CollisionShapePtr mCol[AT_LAST];
AxisManipulatorHandle* mHandle[AT_LAST];
另外,CorePartition中的setSkyboxMaterial、setGlobalAmbient之類的代碼貌似沒用。準備棄之。
// 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);
}