本文整理汇总了C++中CObject3D::CSGSplitSectors方法的典型用法代码示例。如果您正苦于以下问题:C++ CObject3D::CSGSplitSectors方法的具体用法?C++ CObject3D::CSGSplitSectors怎么用?C++ CObject3D::CSGSplitSectors使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CObject3D
的用法示例。
在下文中一共展示了CObject3D::CSGSplitSectors方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SplitOneSector
/*
* Split one sector by a 3D object.
*/
void CWorld::SplitOneSector(CBrushSector &bscToSplit, CObject3D &obToSplitBy)
{
// get the brush mip from sector to split
CBrushMip *pbmMip = bscToSplit.bsc_pbmBrushMip;
// create object to split from sector to split and destroy the sector
CBrushSectorSelectionForCSG selbscToSplit;
selbscToSplit.Select(bscToSplit);
CObject3D obToSplit;
pbmMip->ToObject3D(obToSplit, selbscToSplit);
pbmMip->DeleteSelectedSectors(selbscToSplit);
// copy ambient value from the sector to split to the sector to split with
obToSplitBy.ob_aoscSectors.Lock();
obToSplitBy.ob_aoscSectors[0].osc_colAmbient = bscToSplit.bsc_colAmbient;
obToSplitBy.ob_aoscSectors[0].osc_colColor = bscToSplit.bsc_colColor;
obToSplitBy.ob_aoscSectors[0].osc_ulFlags[0] = bscToSplit.bsc_ulFlags;
obToSplitBy.ob_aoscSectors[0].osc_ulFlags[1] = bscToSplit.bsc_ulFlags2;
obToSplitBy.ob_aoscSectors[0].osc_ulFlags[2] = bscToSplit.bsc_ulVisFlags;
obToSplitBy.ob_aoscSectors.Unlock();
// do 'split sectors' CSG with the objects
CObject3D obResult;
_pfWorldEditingProfile.StartTimer(CWorldEditingProfile::PTI_OBJECTCSG);
obResult.CSGSplitSectors(obToSplit, obToSplitBy);
_pfWorldEditingProfile.StopTimer(CWorldEditingProfile::PTI_OBJECTCSG);
// return the result to the source brush mip
try {
pbmMip->AddFromObject3D_t(obResult);
} catch (char *strError) {
FatalError("Unexpected error during split sectors operation: %s", strError);
}
}