本文整理汇总了C++中FAssertMsg函数的典型用法代码示例。如果您正苦于以下问题:C++ FAssertMsg函数的具体用法?C++ FAssertMsg怎么用?C++ FAssertMsg使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了FAssertMsg函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: setBaseTexture
//------------------------------------------------------------------------------------------------------
bool CvCameraOverlayInfo::read(CvXMLLoadUtility* pXML)
{
CvString szTextVal;
if (!CvInfoBase::read(pXML))
return false;
pXML->GetChildXmlValByName( &m_bVisible, "bVisible");
pXML->GetChildXmlValByName( szTextVal, "TextureFile");
setBaseTexture(szTextVal);
pXML->GetChildXmlValByName( szTextVal, "CameraOverlayType");
if(szTextVal.CompareNoCase("CAMERA_OVERLAY_DECAL") == 0)
m_eCameraOverlayType = CAMERA_OVERLAY_DECAL;
else if(szTextVal.CompareNoCase("CAMERA_OVERLAY_ADDITIVE") == 0)
m_eCameraOverlayType = CAMERA_OVERLAY_ADDITIVE;
else
{
FAssertMsg(false, "[Jason] Unknown camera overlay type.");
m_eCameraOverlayType = CAMERA_OVERLAY_DECAL;
}
return true;
}
示例2: FAssertMsg
int CvArea::getNumRevealedTiles(TeamTypes eIndex) const
{
FAssertMsg(eIndex >= 0, "eIndex is expected to be >= 0");
FAssertMsg(eIndex < MAX_PLAYERS, "eIndex is expected to be < MAX_PLAYERS");
return m_aiNumRevealedTiles[eIndex];
}
示例3: FAssertMsg
/// What Flavors will be added by adopting this Grand Strategy?
int CvAIGrandStrategyXMLEntry::GetFlavorModValue(int i) const
{
FAssertMsg(i < GC.getNumFlavorTypes(), "Index out of bounds");
FAssertMsg(i > -1, "Index out of bounds");
return m_piFlavorModValue ? m_piFlavorModValue[i] : 0;
}
示例4: FAssertMsg
void CvBattleDefinition::checkBattleRound(int index) const
{
FAssertMsg((index >= 0) && (index < (int)m_aBattleRounds.size()), "[Jason] Invalid battle round index.");
}
示例5: checkBattleUnitType
void checkBattleUnitType(BattleUnitTypes unitType)
{
FAssertMsg((unitType >= 0) && (unitType < BATTLE_UNIT_COUNT), "[Jason] Invalid battle unit type.");
}
示例6: PROFILE_FUNC
///TKs Med TradeScreens
void CvMapGenerator::addEurope()
{
PROFILE_FUNC();
gDLL->NiTextOut("Adding Europe...");
for (int iEurope = 0; iEurope < GC.getNumEuropeInfos(); ++iEurope)
{
EuropeTypes eEurope = (EuropeTypes) iEurope;
CvEuropeInfo& kEurope = GC.getEuropeInfo(eEurope);
int iWidthPercent = kEurope.getWidthPercent();
gDLL->getPythonIFace()->pythonGetEuropeWidthPercent(eEurope, &iWidthPercent);
int iMinLandDistance = kEurope.getMinLandDistance();
gDLL->getPythonIFace()->pythonGetEuropeMinLandDistance(eEurope, &iMinLandDistance);
//try several times until at least one start europe is found
//bool bWaterRoute = (kEurope.getDomainsValid(DOMAIN_SEA));
bool bAnyEuropeFound = false;
bool bCheckDirection = true;
//int iDomainCount = 0;
int iGridWidth = GC.getMapINLINE().getGridWidthINLINE();
int iGridHeight = GC.getMapINLINE().getGridHeightINLINE();
for ( ; iMinLandDistance >= 0 && !bAnyEuropeFound; iMinLandDistance--)
{
for (int i = 0; i < GC.getMapINLINE().numPlotsINLINE(); ++i)
{
CvPlot* pPlot = GC.getMapINLINE().plotByIndexINLINE(i);
bCheckDirection = true;
if (!kEurope.getDomainsValid(DOMAIN_SEA) && pPlot->isWater())
{
bCheckDirection = false;
}
//else if (kEurope.getDomainsValid(DOMAIN_SEA))
//{
//iDomainCount++;
//}
if (!kEurope.getDomainsValid(DOMAIN_LAND) && !pPlot->isWater())
{
bCheckDirection = false;
}
//else if (kEurope.getDomainsValid(DOMAIN_LAND))
//{
//iDomainCount++;
//}
if (bCheckDirection && !pPlot->isTradeScreenAccessPlot(eEurope))
{
for (int iDir = 0; iDir < NUM_DIRECTION_TYPES; ++iDir)
{
/*DIRECTION_NORTH,
DIRECTION_NORTHEAST,
DIRECTION_EAST,
DIRECTION_SOUTHEAST,
DIRECTION_SOUTH,
DIRECTION_SOUTHWEST,
DIRECTION_WEST,
DIRECTION_NORTHWEST,*/
bool bEurope = false;
if (kEurope.getDirectionValid(iDir))
{
switch ((DirectionTypes)iDir)
{
case DIRECTION_EAST:
bEurope = (pPlot->getX_INLINE() > (100 - iWidthPercent) * iGridWidth / 100 && pPlot->getY_INLINE() <= (100 - iWidthPercent) * iGridHeight / 100 && pPlot->getY_INLINE() >= iWidthPercent * iGridHeight / 100);
break;
case DIRECTION_NORTHEAST:
bEurope = (pPlot->getX_INLINE() > (100 - iWidthPercent) * iGridWidth / 100 && pPlot->getY_INLINE() > (100 - iWidthPercent) * iGridHeight / 100);
break;
case DIRECTION_SOUTHEAST:
bEurope = (pPlot->getX_INLINE() > (100 - iWidthPercent) * iGridWidth / 100 && pPlot->getY_INLINE() < iWidthPercent * iGridHeight / 100);
break;
case DIRECTION_WEST:
bEurope = (pPlot->getX_INLINE() < iWidthPercent * iGridWidth / 100 && pPlot->getY_INLINE() <= (100 - iWidthPercent) * iGridHeight / 100 && pPlot->getY_INLINE() >= iWidthPercent * iGridHeight / 100);
break;
case DIRECTION_NORTHWEST:
bEurope = (pPlot->getX_INLINE() < (100 - iWidthPercent) * iGridWidth / 100 && pPlot->getY_INLINE() > (100 - iWidthPercent) * iGridHeight / 100);
break;
case DIRECTION_SOUTHWEST:
bEurope = (pPlot->getX_INLINE() < (100 - iWidthPercent) * iGridWidth / 100 && pPlot->getY_INLINE() < iWidthPercent * iGridHeight / 100);
break;
case DIRECTION_NORTH:
bEurope = (pPlot->getY_INLINE() > (100 - iWidthPercent) * iGridHeight / 100 && pPlot->getX_INLINE() > iWidthPercent * iGridWidth / 100 && pPlot->getX_INLINE() < (100 - iWidthPercent) * iGridWidth / 100);
break;
case DIRECTION_SOUTH:
bEurope = (pPlot->getY_INLINE() < iWidthPercent * iGridHeight / 100 && pPlot->getX_INLINE() > iWidthPercent * iGridWidth / 100 && pPlot->getX_INLINE() < (100 - iWidthPercent) * iGridWidth / 100);
break;
default:
FAssertMsg(false, "Invalid direction");
break;
}
}
if (bEurope)
{
if (kEurope.getDomainsValid(DOMAIN_SEA))
{
for (int i = -iMinLandDistance; i <= iMinLandDistance && bEurope; i++)
//.........这里部分代码省略.........
示例7: FAssertMsg
//Note from Blake:
//Iustus wrote this function, it ensures that a new river actually
//creates fresh water on the passed plot. Quite useful really
//Altouh I veto'd it's use since I like that you don't always
//get fresh water starts.
// pFreshWaterPlot = the plot we want to give a fresh water river
//
bool CvMapGenerator::addRiver(CvPlot* pFreshWaterPlot)
{
FAssertMsg(pFreshWaterPlot != NULL, "NULL plot parameter");
// cannot have a river flow next to water
if (pFreshWaterPlot->isWater())
{
return false;
}
// if it already has a fresh water river, then success! we done
if (pFreshWaterPlot->isRiver())
{
return true;
}
bool bSuccess = false;
// randomize the order of directions
std::vector<int> aiShuffle(NUM_CARDINALDIRECTION_TYPES);
GC.getGameINLINE().getMapRand().shuffleSequence(aiShuffle, NULL);
// make two passes, once for each flow direction of the river
int iNWFlowPass = GC.getGameINLINE().getMapRandNum(2, "addRiver");
for (int iPass = 0; !bSuccess && iPass <= 1; iPass++)
{
// try placing a river edge in each direction, in random order
for (int iI = 0; !bSuccess && iI < NUM_CARDINALDIRECTION_TYPES; iI++)
{
CardinalDirectionTypes eRiverDirection = NO_CARDINALDIRECTION;
CvPlot *pRiverPlot = NULL;
switch (aiShuffle[iI])
{
case CARDINALDIRECTION_NORTH:
if (iPass == iNWFlowPass)
{
pRiverPlot = plotDirection(pFreshWaterPlot->getX_INLINE(), pFreshWaterPlot->getY_INLINE(), DIRECTION_NORTH);
eRiverDirection = CARDINALDIRECTION_WEST;
}
else
{
pRiverPlot = plotDirection(pFreshWaterPlot->getX_INLINE(), pFreshWaterPlot->getY_INLINE(), DIRECTION_NORTHWEST);
eRiverDirection = CARDINALDIRECTION_EAST;
}
break;
case CARDINALDIRECTION_EAST:
if (iPass == iNWFlowPass)
{
pRiverPlot = pFreshWaterPlot;
eRiverDirection = CARDINALDIRECTION_NORTH;
}
else
{
pRiverPlot = plotDirection(pFreshWaterPlot->getX_INLINE(), pFreshWaterPlot->getY_INLINE(), DIRECTION_NORTH);
eRiverDirection = CARDINALDIRECTION_SOUTH;
}
break;
case CARDINALDIRECTION_SOUTH:
if (iPass == iNWFlowPass)
{
pRiverPlot = pFreshWaterPlot;
eRiverDirection = CARDINALDIRECTION_WEST;
}
else
{
pRiverPlot = plotDirection(pFreshWaterPlot->getX_INLINE(), pFreshWaterPlot->getY_INLINE(), DIRECTION_WEST);
eRiverDirection = CARDINALDIRECTION_EAST;
}
break;
case CARDINALDIRECTION_WEST:
if (iPass == iNWFlowPass)
{
pRiverPlot = plotDirection(pFreshWaterPlot->getX_INLINE(), pFreshWaterPlot->getY_INLINE(), DIRECTION_WEST);
eRiverDirection = CARDINALDIRECTION_NORTH;
}
else
{
pRiverPlot = plotDirection(pFreshWaterPlot->getX_INLINE(), pFreshWaterPlot->getY_INLINE(), DIRECTION_NORTHWEST);
eRiverDirection = CARDINALDIRECTION_SOUTH;
}
break;
default:
FAssertMsg(false, "invalid cardinal direction");
}
if (pRiverPlot != NULL && !pRiverPlot->hasCoastAtSECorner())
{
// try to make the river
//.........这里部分代码省略.........
示例8: plotCardinalDirection
//.........这里部分代码省略.........
pRiverPlot->setNOfRiver(true, eLastCardinalDirection);
}
else if (eLastCardinalDirection==CARDINALDIRECTION_SOUTH)
{
pRiverPlot = plotCardinalDirection(pStartPlot->getX_INLINE(), pStartPlot->getY_INLINE(), CARDINALDIRECTION_SOUTH);
if (pRiverPlot == NULL)
{
return;
}
pAdjacentPlot = plotCardinalDirection(pRiverPlot->getX_INLINE(), pRiverPlot->getY_INLINE(), CARDINALDIRECTION_EAST);
if ((pAdjacentPlot == NULL) || pRiverPlot->isWOfRiver() || pRiverPlot->isWater() || pAdjacentPlot->isWater())
{
return;
}
pStartPlot->setRiverID(iThisRiverID);
pRiverPlot->setWOfRiver(true, eLastCardinalDirection);
}
else if (eLastCardinalDirection==CARDINALDIRECTION_WEST)
{
pRiverPlot = pStartPlot;
if (pRiverPlot == NULL)
{
return;
}
pAdjacentPlot = plotCardinalDirection(pRiverPlot->getX_INLINE(), pRiverPlot->getY_INLINE(), CARDINALDIRECTION_SOUTH);
if ((pAdjacentPlot == NULL) || pRiverPlot->isNOfRiver() || pRiverPlot->isWater() || pAdjacentPlot->isWater())
{
return;
}
pStartPlot->setRiverID(iThisRiverID);
pRiverPlot->setNOfRiver(true, eLastCardinalDirection);
pRiverPlot = plotCardinalDirection(pRiverPlot->getX_INLINE(), pRiverPlot->getY_INLINE(), CARDINALDIRECTION_WEST);
}
else
{
//FAssertMsg(false, "Illegal direction type");
// River is starting here, set the direction in the next step
pRiverPlot = pStartPlot;
long result = 0;
if (gDLL->getPythonIFace()->pythonGetRiverStartCardinalDirection(pRiverPlot, &result) && !gDLL->getPythonIFace()->pythonUsingDefaultImpl()) // Python override
{
if (result >= 0)
{
eBestCardinalDirection = ((CardinalDirectionTypes)result);
}
else
{
FAssertMsg(false, "python pythonGetRiverStartCardinalDirection() must return >= 0");
}
}
}
if (pRiverPlot == NULL)
{
return; // The river has flowed off the edge of the map. All is well.
}
else if (pRiverPlot->hasCoastAtSECorner())
{
return; // The river has flowed into the ocean. All is well.
}
if (eBestCardinalDirection == NO_CARDINALDIRECTION)
{
int iBestValue = MAX_INT;
for (int iI = 0; iI < NUM_CARDINALDIRECTION_TYPES; iI++)
{
if (getOppositeCardinalDirection((CardinalDirectionTypes)iI) != eOriginalCardinalDirection)
{
if (getOppositeCardinalDirection((CardinalDirectionTypes)iI) != eLastCardinalDirection)
{
CvPlot* pAdjacentPlot;
pAdjacentPlot = plotCardinalDirection(pRiverPlot->getX_INLINE(), pRiverPlot->getY_INLINE(), ((CardinalDirectionTypes)iI));
if (pAdjacentPlot != NULL)
{
int iValue = getRiverValueAtPlot(pAdjacentPlot);
if (iValue < iBestValue)
{
iBestValue = iValue;
eBestCardinalDirection = (CardinalDirectionTypes)iI;
}
}
}
}
}
}
if (eBestCardinalDirection != NO_CARDINALDIRECTION)
{
if (eOriginalCardinalDirection == NO_CARDINALDIRECTION)
{
eOriginalCardinalDirection = eBestCardinalDirection;
}
doRiver(pRiverPlot, eBestCardinalDirection, eOriginalCardinalDirection, iThisRiverID);
}
}
示例9: while
///Tks Med
CvPlot* CvMap::syncRandPlot(int iFlags, int iArea, int iMinUnitDistance, int iTimeout, bool bIgnoreNativeTeams)
{
///TKe
CvPlot* pPlot = NULL;
int iCount = 0;
while (iCount < iTimeout)
{
CvPlot* pTestPlot = plotSorenINLINE(GC.getGameINLINE().getSorenRandNum(getGridWidthINLINE(), "Rand Plot Width"), GC.getGameINLINE().getSorenRandNum(getGridHeightINLINE(), "Rand Plot Height"));
FAssertMsg(pTestPlot != NULL, "TestPlot is not assigned a valid value");
if ((iArea == -1) || (pTestPlot->getArea() == iArea))
{
bool bValid = true;
if (bValid)
{
if (iMinUnitDistance != -1)
{
for (int iDX = -(iMinUnitDistance); iDX <= iMinUnitDistance; iDX++)
{
for (int iDY = -(iMinUnitDistance); iDY <= iMinUnitDistance; iDY++)
{
CvPlot* pLoopPlot = plotXY(pTestPlot->getX_INLINE(), pTestPlot->getY_INLINE(), iDX, iDY);
if (pLoopPlot != NULL)
{
if (pLoopPlot->isUnit())
{
bValid = false;
}
}
}
}
}
}
if (bValid)
{
if (iFlags & RANDPLOT_LAND)
{
if (pTestPlot->isWater())
{
bValid = false;
}
}
}
if (bValid)
{
if (iFlags & RANDPLOT_UNOWNED)
{
if (pTestPlot->isOwned())
{
///Tks Med
if (bIgnoreNativeTeams)
{
if (!GET_PLAYER(pTestPlot->getOwnerINLINE()).isNative())
{
bValid = false;
}
}
else
{
bValid = false;
}
///TKe
}
}
}
if (bValid)
{
if (iFlags & RANDPLOT_ADJACENT_UNOWNED)
{
if (pTestPlot->isAdjacentOwned())
{
bValid = false;
}
}
}
if (bValid)
{
if (iFlags & RANDPLOT_ADJACENT_LAND)
{
if (!(pTestPlot->isAdjacentToLand()))
{
bValid = false;
}
}
}
if (bValid)
{
if (iFlags & RANDPLOT_PASSIBLE)
{
if (pTestPlot->isImpassable())
//.........这里部分代码省略.........
示例10: m_pHandicapInfo
CvDllHandicapInfo::CvDllHandicapInfo(CvHandicapInfo* pHandicapInfo)
: m_pHandicapInfo(pHandicapInfo)
, m_uiRefCount(1)
{
FAssertMsg(pHandicapInfo != NULL, "SHOULD NOT HAPPEN");
}
示例11: switch
CvMessageData* CvMessageData::createMessage(GameMessageTypes eType)
{
switch (eType)
{
case GAMEMESSAGE_EXTENDED_GAME:
return new CvNetExtendedGame();
case GAMEMESSAGE_AUTO_MOVES:
return new CvNetAutoMoves();
case GAMEMESSAGE_TURN_COMPLETE:
return new CvNetTurnComplete();
case GAMEMESSAGE_PUSH_ORDER:
return new CvNetPushOrder();
case GAMEMESSAGE_POP_ORDER:
return new CvNetPopOrder();
case GAMEMESSAGE_DO_TASK:
return new CvNetDoTask();
case GAMEMESSAGE_UPDATE_CIVICS:
return new CvNetUpdateCivics();
case GAMEMESSAGE_RESEARCH:
return new CvNetResearch();
case GAMEMESSAGE_ESPIONAGE_CHANGE:
return new CvNetEspionageChange();
case GAMEMESSAGE_ADVANCED_START_ACTION:
return new CvNetAdvancedStartAction();
case GAMEMESSAGE_MOD_NET_MESSAGE:
return new CvNetModNetMessage();
case GAMEMESSAGE_CONVERT:
return new CvNetConvert();
case GAMEMESSAGE_EMPIRE_SPLIT:
return new CvNetEmpireSplit();
case GAMEMESSAGE_FOUND_RELIGION:
return new CvNetFoundReligion();
case GAMEMESSAGE_LAUNCH_SPACESHIP:
return new CvNetLaunchSpaceship();
case GAMEMESSAGE_EVENT_TRIGGERED:
return new CvNetEventTriggered();
case GAMEMESSAGE_JOIN_GROUP:
return new CvNetJoinGroup();
case GAMEMESSAGE_PUSH_MISSION:
return new CvNetPushMission();
case GAMEMESSAGE_AUTO_MISSION:
return new CvNetAutoMission();
case GAMEMESSAGE_DO_COMMAND:
return new CvNetDoCommand();
case GAMEMESSAGE_PERCENT_CHANGE:
return new CvNetPercentChange();
case GAMEMESSAGE_CHANGE_VASSAL:
return new CvNetChangeVassal();
case GAMEMESSAGE_CHOOSE_ELECTION:
return new CvNetChooseElection();
case GAMEMESSAGE_DIPLO_VOTE:
return new CvNetDiploVote();
case GAMEMESSAGE_CHANGE_WAR:
return new CvNetChangeWar();
case GAMEMESSAGE_PING:
return new CvNetPing();
// BUG - Reminder Mod - start
case GAMEMESSAGE_ADD_REMINDER:
return new CvNetAddReminder();
// BUG - Reminder Mod - end
default:
FAssertMsg(false, "Unknown message type");
}
return NULL;
}
示例12: m_pUnit
CvDllUnit::CvDllUnit(CvUnit* pUnit)
: m_pUnit(pUnit)
, m_uiRefCount(1)
{
FAssertMsg(pUnit != NULL, "SHOULD NOT HAPPEN");
}
示例13: calculateNumBonusesToAdd
void CvMapGenerator::addUniqueBonusType(BonusTypes eBonusType)
{
int* piAreaTried = new int[GC.getMapINLINE().getNumAreas()];
for (int iI = 0; iI < GC.getMapINLINE().getNumAreas(); iI++)
{
piAreaTried[iI] = FFreeList::INVALID_INDEX;
}
CvBonusInfo& pBonusInfo = GC.getBonusInfo(eBonusType);
int iBonusCount = calculateNumBonusesToAdd(eBonusType);
bool bIgnoreLatitude = false;
gDLL->getPythonIFace()->pythonIsBonusIgnoreLatitudes(&bIgnoreLatitude);
FAssertMsg(pBonusInfo.isOneArea(), "addUniqueBonusType called with non-unique bonus type");
while (true)
{
int iBestValue = 0;
int iLoop = 0;
CvArea *pBestArea = NULL;
CvArea *pLoopArea = NULL;
for(pLoopArea = GC.getMapINLINE().firstArea(&iLoop); pLoopArea != NULL; pLoopArea = GC.getMapINLINE().nextArea(&iLoop))
{
bool bTried = false;
for (int iI = 0; iI < GC.getMapINLINE().getNumAreas(); iI++)
{
if (pLoopArea->getID() == piAreaTried[iI])
{
bTried = true;
break;
}
}
if (!bTried)
{
int iNumUniqueBonusesOnArea = pLoopArea->countNumUniqueBonusTypes() + 1; // number of unique bonuses starting on the area, plus this one
int iNumTiles = pLoopArea->getNumTiles();
int iValue = iNumTiles / iNumUniqueBonusesOnArea;
if (iValue > iBestValue)
{
iBestValue = iValue;
pBestArea = pLoopArea;
}
}
}
if (pBestArea == NULL)
{
break; // can't place bonus on any area
}
for (int iI = 0; iI < GC.getMapINLINE().getNumAreas(); iI++)
{
if (piAreaTried[iI] == FFreeList::INVALID_INDEX)
{
piAreaTried[iI] = pBestArea->getID();
break;
}
}
// Place the bonuses:
std::vector<int> aiShuffle(GC.getMapINLINE().numPlotsINLINE());
GC.getGameINLINE().getMapRand().shuffleSequence(aiShuffle, "addUniqueBonusType shuffle");
for (int iI = 0; iI < GC.getMapINLINE().numPlotsINLINE(); iI++)
{
CvPlot* pPlot = GC.getMapINLINE().plotByIndexINLINE(aiShuffle[iI]);
FAssertMsg(pPlot != NULL, "addUniqueBonusType(): pPlot is null");
if (GC.getMapINLINE().getNumBonuses(eBonusType) >= iBonusCount)
{
break; // We already have enough
}
if (pBestArea == pPlot->area())
{
if (canPlaceBonusAt(eBonusType, pPlot->getX_INLINE(), pPlot->getY_INLINE(), bIgnoreLatitude))
{
pPlot->setBonusType(eBonusType);
for (int iDX = -(pBonusInfo.getGroupRange()); iDX <= pBonusInfo.getGroupRange(); iDX++)
{
for (int iDY = -(pBonusInfo.getGroupRange()); iDY <= pBonusInfo.getGroupRange(); iDY++)
{
if (GC.getMapINLINE().getNumBonuses(eBonusType) < iBonusCount)
{
CvPlot* pLoopPlot = plotXY(pPlot->getX_INLINE(), pPlot->getY_INLINE(), iDX, iDY);
if (pLoopPlot != NULL && (pLoopPlot->area() == pBestArea))
{
if (canPlaceBonusAt(eBonusType, pLoopPlot->getX_INLINE(), pLoopPlot->getY_INLINE(), bIgnoreLatitude))
{
if (GC.getGameINLINE().getMapRandNum(100, "addUniqueBonusType") < pBonusInfo.getGroupRand())
//.........这里部分代码省略.........
示例14: FAssertMsg
void BaseCheckYieldGroup::build()
{
FAssertMsg(false, "The base function shouldn't call this virtual function");
}
示例15: m_pTerrainInfo
CvDllTerrainInfo::CvDllTerrainInfo(CvTerrainInfo* pTerrainInfo)
: m_pTerrainInfo(pTerrainInfo)
, m_uiRefCount(1)
{
FAssertMsg(pTerrainInfo != NULL, "SHOULD NOT HAPPEN");
}