本文整理汇总了C++中ObjectList::getNext方法的典型用法代码示例。如果您正苦于以下问题:C++ ObjectList::getNext方法的具体用法?C++ ObjectList::getNext怎么用?C++ ObjectList::getNext使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ObjectList
的用法示例。
在下文中一共展示了ObjectList::getNext方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
void ireon::kd_tree::MManager<T>::FreeObjectList( ObjectList<T>* a_List )
{
ObjectList<T>* list = a_List;
while (list->getNext()) list = list->getNext();
list->setNext( m_OList );
m_OList = a_List;
}
示例2: if
//.........这里部分代码省略.........
if (O.val[i] < p1.val[i]) return 0;
}
else if (O.val[i] > p2.val[i]) return 0;
// clip ray segment to box
for ( int i = 0; i < 3; i++ )
{
real pos = O.val[i] + tfar * D.val[i];
if (D.val[i] < 0)
{
// clip end point
if (pos < p1.val[i]) tfar = tnear + (tfar - tnear) * ((O.val[i] - p1.val[i]) / (O.val[i] - pos));
// clip start point
if (O.val[i] > p2.val[i]) tnear += (tfar - tnear) * ((O.val[i] - p2.val[i]) / (tfar * D.val[i]));
}
else
{
// clip end point
if (pos > p2.val[i]) tfar = tnear + (tfar - tnear) * ((p2.val[i] - O.val[i]) / (pos - O.val[i]));
// clip start point
if (O.val[i] < p1.val[i]) tnear += (tfar - tnear) * ((p1.val[i] - O.val[i]) / (tfar * D.val[i]));
}
if (tnear > tfar) return 0;
}
// init stack
int entrypoint = 0, exitpoint = 1;
// init traversal
KdTreeNode<T>* farchild, *currnode;
currnode = getRoot();
m_Stack[entrypoint].t = tnear;
if (tnear > 0.0f) m_Stack[entrypoint].pb = O + D * tnear;
else m_Stack[entrypoint].pb = O;
m_Stack[exitpoint].t = tfar;
m_Stack[exitpoint].pb = O + D * tfar;
m_Stack[exitpoint].node = 0;
// traverse kd-tree
while (currnode)
{
while (!currnode->isLeaf())
{
real splitpos = currnode->getSplitPos();
int axis = currnode->getAxis();
if (m_Stack[entrypoint].pb.val[axis] <= splitpos)
{
if (m_Stack[exitpoint].pb.val[axis] <= splitpos)
{
currnode = currnode->getLeft();
continue;
}
if (m_Stack[exitpoint].pb.val[axis] == splitpos)
{
currnode = currnode->getRight();
continue;
}
currnode = currnode->getLeft();
farchild = currnode + 1; // GetRight();
}
else
{
if (m_Stack[exitpoint].pb.val[axis] > splitpos)
{
currnode = currnode->getRight();
continue;
}
farchild = currnode->getLeft();
currnode = farchild + 1; // GetRight();
}
t = (splitpos - O.val[axis]) / D.val[axis];
int tmp = exitpoint++;
if (exitpoint == entrypoint) exitpoint++;
m_Stack[exitpoint].prev = tmp;
m_Stack[exitpoint].t = t;
m_Stack[exitpoint].node = farchild;
m_Stack[exitpoint].pb.val[axis] = splitpos;
int nextaxis = m_Mod[axis + 1];
int prevaxis = m_Mod[axis + 2];
m_Stack[exitpoint].pb.val[nextaxis] = O.val[nextaxis] + t * D.val[nextaxis];
m_Stack[exitpoint].pb.val[prevaxis] = O.val[prevaxis] + t * D.val[prevaxis];
}
ObjectList<T>* list = currnode->getList();
real dist = m_Stack[exitpoint].t;
while (list)
{
T* pr = list->getPrimitive();
int result;
m_Intersections++;
if (result = intersect( pr, a_Ray, dist ))
{
retval = result;
a_Dist = dist;
a_Prim = pr;
}
list = list->getNext();
}
if (retval) return retval;
entrypoint = exitpoint;
currnode = m_Stack[exitpoint].node;
exitpoint = m_Stack[entrypoint].prev;
}
return 0;
}
示例3: setCurrentAvatar
// -----------------------------------------------------------------
// Name : setCurrentAvatar
// -----------------------------------------------------------------
void LevelUpDlg::setCurrentAvatar(AvatarData * pAvatar)
{
m_pCurrentAvatar = pAvatar;
short iSpecialLevels[MAX_LEVELS] = { 0, 1, -1, 2, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1 };
deleteAllComponents();
// Init position for components
int iWidth = getWidth();
int yPxl = 10;
// Top label
char sText[LABEL_MAX_CHARS];
i18n->getText("LEVEL_UP", sText, LABEL_MAX_CHARS);
guiLabel * pLbl = new guiLabel();
pLbl->init(sText, H1_FONT, H1_COLOR, "TopLabe", 0, 0, iWidth - 10, 0, m_pLocalClient->getDisplay());
pLbl->moveTo((iWidth - pLbl->getWidth()) / 2, yPxl);
addComponent(pLbl);
// Text
yPxl += pLbl->getHeight() + 15;
u16 uLevel = pAvatar->getRealLevel() + 1;
assert(uLevel > 1);
char sBuf[256];
i18n->getText("(s)_LEVELED_UP_AND_IS_(d)", sBuf, 256);
snprintf(sText, LABEL_MAX_CHARS, sBuf, pAvatar->m_sCustomName, (int)uLevel);
pLbl = new guiLabel();
pLbl->init(sText, TEXT_FONT, TEXT_COLOR, "CenterLabe", 0, 0, iWidth - 10, 0, m_pLocalClient->getDisplay());
pLbl->moveTo(5, yPxl);
addComponent(pLbl);
Edition * pEdition = m_pLocalClient->getDataFactory()->findEdition(pAvatar->m_sEdition);
assert(pEdition != NULL);
m_iSpecialLevel = iSpecialLevels[uLevel-1];
if (m_iSpecialLevel >= 0)
{
u8 uTreeType = -1;
char sPhraseKey[128] = "";
switch (m_iSpecialLevel)
{
case 1:
uTreeType = PROGRESSION_MAGIC;
wsafecpy(sPhraseKey, 128, "CHOOSE_MAGIC_PATH");
break;
case 2:
case 3:
uTreeType = PROGRESSION_TRAIT;
wsafecpy(sPhraseKey, 128, "CHOOSE_CHARACTER_TRAIT");
break;
}
assert(uTreeType >= 0);
// Text
i18n->getText(sPhraseKey, sText, LABEL_MAX_CHARS);
yPxl += pLbl->getHeight() + 2 * SPACING;
pLbl = new guiLabel();
pLbl->init(sText, TEXT_FONT, TEXT_COLOR, "", SPACING, yPxl, iWidth - 2 * SPACING, 0, getDisplay());
addComponent(pLbl);
// Open tree combo
yPxl += pLbl->getHeight() + SPACING;
guiComboBox * pCombo = guiComboBox::createDefaultComboBox("OpenTreeCombo", m_pLocalClient->getInterface(), getDisplay());
pCombo->moveTo(SPACING, yPxl);
addComponent(pCombo);
ObjectList * pTrees = new ObjectList(false);
pEdition->getAllTreesByType(pTrees, uTreeType);
ProgressionTree * pTree = (ProgressionTree*) pTrees->getFirst(0);
while (pTree != NULL)
{
pTree->findLocalizedElement(sText, LABEL_MAX_CHARS, i18n->getCurrentLanguageName(), "name");
guiButton * pBtn = pCombo->addString(sText, "OpenTreeButton");
pBtn->setAttachment(pTree);
pTree->getDescription(sText, LABEL_MAX_CHARS, m_pLocalClient);
pBtn->setTooltipText(sText);
pTree = (ProgressionTree*) pTrees->getNext(0);
}
delete pTrees;
yPxl += pCombo->getHeight() + SPACING;
}
else
{
int xTree = SPACING;
int btnSize = 64;
int treeWidth = 2 * btnSize + btnSize / 3;
int treeTop = yPxl + pLbl->getHeight() + 2 * SPACING;
// Trees
for (int i = 0; i < NB_PROGRESSION_TREES; i++)
{
if (strcmp(pAvatar->m_pProgression[i].sTreeName, "") == 0)
continue;
ProgressionTree * pTree = pEdition->findProgressionTree(pAvatar->m_pProgression[i].sTreeName);
assert(pTree != NULL);
// Top label
//.........这里部分代码省略.........
示例4: autoStartGame
// -----------------------------------------------------------------
// Name : autoStartGame
// -----------------------------------------------------------------
void DebugManager::autoStartGame()
{
// Build client data
int nbClients = 1;
ClientData * clients = new ClientData[nbClients];
int iClient = 0;
clients[iClient].bLocal = true;
// Re-init map data
MapReader * pMapReader = new MapReader(m_pLocalClient);
pMapReader->init("standard.lua");
ObjectList * pMapParameters = new ObjectList(true);
pMapReader->getMapParameters(pMapParameters, LABEL_MAX_CHARS);
int * pCustomParams = NULL;
if (pMapParameters->size > 0)
pCustomParams = new int[pMapParameters->size];
// Map custom parameters
int i = 0;
MapReader::MapParameters * pParam = (MapReader::MapParameters*) pMapParameters->getFirst(0);
while (pParam != NULL)
{
pCustomParams[i++] = pParam->defaultValueIndex;
pParam = (MapReader::MapParameters*) pMapParameters->getNext(0);
}
// Init map generator (we will not delete it here, as the pointer now belong to Server object)
pMapReader->setMapParameters(pCustomParams, pMapParameters->size, 2);
delete[] pCustomParams;
MapReader::deleteMapParameters(pMapParameters);
delete pMapParameters;
// Init server
Server * pServer = m_pLocalClient->initServer("", 1, clients, pMapReader, -1, -1);
delete[] clients;
if (pServer == NULL)
{
notifyErrorMessage("Error: server could not be initialized.");
return;
}
// Build players data
ObjectList * pServerPlayers = pServer->getSolver()->getPlayersList();
// Create neutral player
char sName[NAME_MAX_CHARS];
i18n->getText("NEUTRA", sName, NAME_MAX_CHARS);
Player * pPlayer = new Player(0, 0, pServer->getSolver()->getGlobalSpellsPtr());
wsafecpy(pPlayer->m_sProfileName, NAME_MAX_CHARS, sName);
pPlayer->m_Color = rgb(0.5, 0.5, 0.5);
wsafecpy(pPlayer->m_sBanner, 64, "blason1");
pServer->getSolver()->setNeutralPlayer(pPlayer);
// Human players
int playerId = 1;
for (int fdfdf = 0; fdfdf < 2; fdfdf++)
{
// Create player object
pPlayer = new Player(playerId, 0, pServer->getSolver()->getGlobalSpellsPtr());
snprintf(pPlayer->m_sProfileName, NAME_MAX_CHARS, "test%d", playerId);
Profile * pProfile = m_pLocalClient->getDataFactory()->findProfile(pPlayer->m_sProfileName);
AvatarData * pAvatar = (AvatarData*) pProfile->getAvatarsList()->getFirst(0);
pPlayer->m_Color = rgb(1, 1, 1);
pAvatar->getBanner(pPlayer->m_sBanner, 64);
pServerPlayers->addLast(pPlayer);
// Set Avatar
CoordsMap pos = pMapReader->getPlayerPosition(playerId-1);
pServer->getSolver()->setInitialAvatar(pAvatar->clone(m_pLocalClient), pPlayer, pos);
// Add spells that are equipped
Profile::SpellData * pSpellDesc = (Profile::SpellData*) pProfile->getSpellsList()->getFirst(0);
while (pSpellDesc != NULL)
{
AvatarData * pOwner = pSpellDesc->m_pOwner;
if (pOwner != NULL && strcmp(pAvatar->m_sEdition, pOwner->m_sEdition) == 0
&& strcmp(pAvatar->m_sObjectId, pOwner->m_sObjectId) == 0)
pServer->getSolver()->addInitialPlayerSpell(pPlayer, pSpellDesc->m_sEdition, pSpellDesc->m_sName);
pSpellDesc = (Profile::SpellData*) pProfile->getSpellsList()->getNext(0);
}
// Add equipped artifacts
Artifact * pArtifact = (Artifact*) pProfile->getArtifactsList()->getFirst(0);
while (pArtifact != NULL)
{
AvatarData * pOwner = pArtifact->m_pOwner;
if (pOwner != NULL && strcmp(pAvatar->m_sEdition, pOwner->m_sEdition) == 0
&& strcmp(pAvatar->m_sObjectId, pOwner->m_sObjectId) == 0)
{
Unit * pAvatarInGame = pPlayer->getAvatar();
assert(pAvatarInGame != NULL);
ArtifactEffect * pEffect = (ArtifactEffect*) pArtifact->getArtifactEffects()->getFirst(0);
while (pEffect != NULL)
{
switch (pEffect->getType())
{
case ARTIFACT_EFFECT_CHARAC:
{
bool bFound = true;
long val = pAvatarInGame->getValue(((ArtifactEffect_Charac*)pEffect)->m_sKey, false, &bFound);
if (bFound)
//.........这里部分代码省略.........