您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ GetNextWayPoint函数代码示例

51自学网 2021-06-01 21:11:38
  C++
这篇教程C++ GetNextWayPoint函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中GetNextWayPoint函数的典型用法代码示例。如果您正苦于以下问题:C++ GetNextWayPoint函数的具体用法?C++ GetNextWayPoint怎么用?C++ GetNextWayPoint使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了GetNextWayPoint函数的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: AI

void Transport::Update(uint32 p_diff){    if (!AI())    {        if (!AIM_Initialize())            sLog->outError("Could not initialize GameObjectAI for Transport");    } else        AI()->UpdateAI(p_diff);    if (m_WayPoints.size() <= 1)        return;    m_timer = getMSTime() % m_period;    while (((m_timer - m_curr->first) % m_pathTime) > ((m_next->first - m_curr->first) % m_pathTime))    {        DoEventIfAny(*m_curr, true);        m_curr = GetNextWayPoint();        m_next = GetNextWayPoint();        DoEventIfAny(*m_curr, false);        // first check help in case client-server transport coordinates de-synchronization        if (m_curr->second.mapid != GetMapId() || m_curr->second.teleport)        {            TeleportTransport(m_curr->second.mapid, m_curr->second.x, m_curr->second.y, m_curr->second.z);        }        else        {            Relocate(m_curr->second.x, m_curr->second.y, m_curr->second.z, GetAngle(m_next->second.x, m_next->second.y) + float(M_PI));            UpdateNPCPositions(); // COME BACK MARKER        }        sScriptMgr->OnRelocate(this, m_curr->first, m_curr->second.mapid, m_curr->second.x, m_curr->second.y, m_curr->second.z);        m_nextNodeTime = m_curr->first;        if (m_curr == m_WayPoints.begin())            sLog->outDebug(LOG_FILTER_TRANSPORTS, " ************ BEGIN ************** %s", m_name.c_str());        sLog->outDebug(LOG_FILTER_TRANSPORTS, "%s moved to %d %f %f %f %d", m_name.c_str(), m_curr->second.id, m_curr->second.x, m_curr->second.y, m_curr->second.z, m_curr->second.mapid);    }    sScriptMgr->OnTransportUpdate(this, p_diff);}
开发者ID:TDMarko,项目名称:SkyFireEMU_rebase,代码行数:45,


示例2: getMSTime

void Transport::Update(uint32 /*p_time*/){    if (m_WayPoints.size() <= 1)        return;    m_timer = getMSTime() % m_period;    while (((m_timer - m_curr->first) % m_pathTime) > ((m_next->first - m_curr->first) % m_pathTime))    {        m_curr = GetNextWayPoint();        m_next = GetNextWayPoint();        // first check help in case client-server transport coordinates de-synchronization        if (m_curr->second.mapid != GetMapId() || m_curr->second.teleport)        {            TeleportTransport(m_curr->second.mapid, m_curr->second.x, m_curr->second.y, m_curr->second.z);        }        else        {            Relocate(m_curr->second.x, m_curr->second.y, m_curr->second.z);        }        /*        for (PlayerSet::iterator itr = m_passengers.begin(); itr != m_passengers.end();)        {            PlayerSet::iterator it2 = itr;            ++itr;            //(*it2)->SetPosition(m_curr->second.x + (*it2)->GetTransOffsetX(), m_curr->second.y + (*it2)->GetTransOffsetY(), m_curr->second.z + (*it2)->GetTransOffsetZ(), (*it2)->GetTransOffsetO());        }        */        m_nextNodeTime = m_curr->first;        if (m_curr == m_WayPoints.begin() && (sLog->getLogFilter() & LOG_FILTER_TRANSPORT_MOVES) == 0)            sLog->outDebug(" ************ BEGIN ************** %s", this->m_name.c_str());        if ((sLog->getLogFilter() & LOG_FILTER_TRANSPORT_MOVES) == 0)            sLog->outDebug("%s moved to %d %f %f %f %d", this->m_name.c_str(), m_curr->second.id, m_curr->second.x, m_curr->second.y, m_curr->second.z, m_curr->second.mapid);        //Transport Event System        CheckForEvent(this->GetEntry(), m_curr->second.id);    }}
开发者ID:Bootz,项目名称:SF1,代码行数:42,


示例3: GetScript

void SmartAI::MovepointReached(uint32 id){    // override the id, path can be resumed any time and counter will reset    // mCurrentWPID holds proper id    // xinef: both point movement and escort generator can enter this function    if (id == SMART_ESCORT_LAST_OOC_POINT)    {        mOOCReached = true;        return;    }    mWPReached = true;    GetScript()->ProcessEventsFor(SMART_EVENT_WAYPOINT_REACHED, NULL, mCurrentWPID);    if (mLastWP)    {        me->SetPosition(mLastWP->x, mLastWP->y, mLastWP->z, me->GetOrientation());        me->SetHomePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation());    }    if (HasEscortState(SMART_ESCORT_PAUSED))    {        if (me->GetMotionMaster()->GetMotionSlotType(MOTION_SLOT_ACTIVE) == ESCORT_MOTION_TYPE)            me->GetMotionMaster()->MovementExpired();        me->StopMovingOnCurrentPos();        me->GetMotionMaster()->MoveIdle();    }    // Xinef: Can be unset in ProcessEvents    else if (HasEscortState(SMART_ESCORT_ESCORTING) && me->GetMotionMaster()->GetCurrentMovementGeneratorType() == ESCORT_MOTION_TYPE)    {        mWPReached = false;        if (mCurrentWPID == GetWPCount())            EndPath();        else if (GetNextWayPoint())        {            SetRun(mRun);            // xinef: if we have reached waypoint, and there is no working spline movement it means our splitted array has ended, make new one            if (me->movespline->Finalized())                ResumePath();        }    }}
开发者ID:Matt-One,项目名称:azerothcore-wotlk,代码行数:44,


示例4: StopPath

void SmartAI::StartPath(bool run, uint32 path, bool repeat, Unit* invoker){    if (me->IsInCombat())// no wp movement in combat    {        sLog->outError("SmartAI::StartPath: Creature entry %u wanted to start waypoint movement while in combat, ignoring.", me->GetEntry());        return;    }    if (HasEscortState(SMART_ESCORT_ESCORTING))        StopPath();    if (path)    {        if (!LoadPath(path))            return;    }    if (!mWayPoints || mWayPoints->empty())        return;    if (WayPoint* wp = GetNextWayPoint())    {        AddEscortState(SMART_ESCORT_ESCORTING);        mCanRepeatPath = repeat;        SetRun(run);        if (invoker && invoker->GetTypeId() == TYPEID_PLAYER)        {            mEscortNPCFlags = me->GetUInt32Value(UNIT_NPC_FLAGS);            me->SetUInt32Value(UNIT_NPC_FLAGS, 0);        }        Movement::PointsArray pathPoints;        GenerateWayPointArray(&pathPoints);        me->GetMotionMaster()->MoveSplinePath(&pathPoints);        GetScript()->ProcessEventsFor(SMART_EVENT_WAYPOINT_START, NULL, wp->id, GetScript()->GetPathId());    }}
开发者ID:Matt-One,项目名称:azerothcore-wotlk,代码行数:39,


示例5: k

//.........这里部分代码省略.........    m_WayPoints[0] = pos;    t += keyFrames[0].node->delay * 1000;    uint32 cM = keyFrames[0].node->mapid;    for(size_t i = 0; i < keyFrames.size() - 1; ++i)    {        float d = 0;        float tFrom = keyFrames[i].tFrom;        float tTo = keyFrames[i].tTo;        // keep the generation of all these points; we use only a few now, but may need the others later        if(((d < keyFrames[i + 1].distFromPrev) && (tTo > 0)))        {            while((d < keyFrames[i + 1].distFromPrev) && (tTo > 0))            {                tFrom += 100;                tTo -= 100;                if(d > 0)                {                    float newX = keyFrames[i].node->x + (keyFrames[i + 1].node->x - keyFrames[i].node->x) * d / keyFrames[i + 1].distFromPrev;                    float newY = keyFrames[i].node->y + (keyFrames[i + 1].node->y - keyFrames[i].node->y) * d / keyFrames[i + 1].distFromPrev;                    float newZ = keyFrames[i].node->z + (keyFrames[i + 1].node->z - keyFrames[i].node->z) * d / keyFrames[i + 1].distFromPrev;                    teleport = false;                    if(keyFrames[i].node->mapid != cM)                    {                        teleport = true;                        cM = keyFrames[i].node->mapid;                    }                    //                    sLog->outString("T: %d, D: %f, x: %f, y: %f, z: %f", t, d, newX, newY, newZ);                    WayPoint pos(keyFrames[i].node->mapid, newX, newY, newZ, teleport, 0);                    if(teleport)                        m_WayPoints[t] = pos;                }                if(tFrom < tTo)                            // caught in tFrom dock's "gravitational pull"                {                    if(tFrom <= 30000)                    {                        d = 0.5f * (tFrom / 1000) * (tFrom / 1000);                    }                    else                    {                        d = 0.5f * 30 * 30 + 30 * ((tFrom - 30000) / 1000);                    }                    d = d - keyFrames[i].distSinceStop;                }                else                {                    if(tTo <= 30000)                    {                        d = 0.5f * (tTo / 1000) * (tTo / 1000);                    }                    else                    {                        d = 0.5f * 30 * 30 + 30 * ((tTo - 30000) / 1000);                    }                    d = keyFrames[i].distUntilStop - d;                }                t += 100;            }            t -= 100;        }        if(keyFrames[i + 1].tFrom > keyFrames[i + 1].tTo)            t += 100 - ((long)keyFrames[i + 1].tTo % 100);        else            t += (long)keyFrames[i + 1].tTo % 100;        teleport = false;        if((keyFrames[i + 1].node->actionFlag == 1) || (keyFrames[i + 1].node->mapid != keyFrames[i].node->mapid))        {            teleport = true;            cM = keyFrames[i + 1].node->mapid;        }        WayPoint pos(keyFrames[i + 1].node->mapid, keyFrames[i + 1].node->x, keyFrames[i + 1].node->y, keyFrames[i + 1].node->z, teleport,            0, keyFrames[i + 1].node->arrivalEventID, keyFrames[i + 1].node->departureEventID);        //        sLog->outString("T: %d, x: %f, y: %f, z: %f, t:%d", t, pos.x, pos.y, pos.z, teleport);        m_WayPoints[t] = pos;        t += keyFrames[i + 1].node->delay * 1000;        //        sLog->outString("------");    }    uint32 timer = t;    //    sLog->outDetail("    Generated %lu waypoints, total time %u.", (unsigned long)m_WayPoints.size(), timer);    m_curr = m_WayPoints.begin();    m_next = GetNextWayPoint();    m_pathTime = timer;    m_nextNodeTime = m_curr->first;    return true;}
开发者ID:ahuraa,项目名称:ServerMythCore,代码行数:101,


示例6: StopPath

void SmartAI::UpdatePath(const uint32 diff){    if (!HasEscortState(SMART_ESCORT_ESCORTING))        return;    if (mEscortInvokerCheckTimer < diff)    {        if (!IsEscortInvokerInRange())        {            StopPath(mDespawnTime, mEscortQuestID, true);        }        mEscortInvokerCheckTimer = 1000;    } else mEscortInvokerCheckTimer -= diff;    // handle pause    if (HasEscortState(SMART_ESCORT_PAUSED))    {        if (mWPPauseTimer < diff)        {            if (!me->isInCombat() && !HasEscortState(SMART_ESCORT_RETURNING) && (mWPReached || mLastWPIDReached == SMART_ESCORT_LAST_OOC_POINT || mForcedPaused))            {                GetScript()->ProcessEventsFor(SMART_EVENT_WAYPOINT_RESUMED, NULL, mLastWP->id, GetScript()->GetPathId());                RemoveEscortState(SMART_ESCORT_PAUSED);                if (mForcedPaused)// if paused between 2 wps resend movement                {                    ResumePath();                    mWPReached = false;                    mForcedPaused = false;                }                if (mLastWPIDReached == SMART_ESCORT_LAST_OOC_POINT)                    mWPReached = true;            }            mWPPauseTimer = 0;        } else {            mWPPauseTimer -= diff;        }    }    if (HasEscortState(SMART_ESCORT_RETURNING))    {        if (mWPReached)//reached OOC WP        {            RemoveEscortState(SMART_ESCORT_RETURNING);            if (!HasEscortState(SMART_ESCORT_PAUSED))                ResumePath();            mWPReached = false;        }    }    if (me->isInCombat() || HasEscortState(SMART_ESCORT_PAUSED | SMART_ESCORT_RETURNING))        return;    // handle next wp    if (mWPReached)//reached WP    {        mWPReached = false;        if (mCurrentWPID == GetWPCount())        {            EndPath();        } else {            WayPoint* wp = GetNextWayPoint();            if (wp)            {                SetRun(mRun);                me->GetMotionMaster()->MovePoint(wp->id, wp->x, wp->y, wp->z);            }        }    }}
开发者ID:AdrElecTro,项目名称:TrinityCore,代码行数:66,


示例7: k

//.........这里部分代码省略.........    // Now we're completely set up; we can move along the length of each waypoint at 100 ms intervals    // speed = max(30, t) (remember x = 0.5s^2, and when accelerating, a = 1 unit/s^2    int t = 0;    bool teleport = false;    if (keyFrames[keyFrames.size() - 1].mapid != keyFrames[0].mapid)        teleport = true;    WayPoint pos(keyFrames[0].mapid, keyFrames[0].x, keyFrames[0].y, keyFrames[0].z, teleport);    m_WayPoints[0] = pos;    t += keyFrames[0].delay * 1000;    int cM = keyFrames[0].mapid;    for (size_t i = 0; i < keyFrames.size() - 1; i++) { //        float d = 0;        float tFrom = keyFrames[i].tFrom;        float tTo = keyFrames[i].tTo;                // keep the generation of all these points; we use only a few now, but may need the others later        if (((d < keyFrames[i + 1].distFromPrev) && (tTo > 0))) {            while ((d < keyFrames[i + 1].distFromPrev) && (tTo > 0)) {                tFrom += 100;                tTo -= 100;                                if (d > 0) {                    float newX, newY, newZ;                    newX = keyFrames[i].x + (keyFrames[i + 1].x - keyFrames[i].x) * d / keyFrames[i + 1].distFromPrev;                    newY = keyFrames[i].y + (keyFrames[i + 1].y - keyFrames[i].y) * d / keyFrames[i + 1].distFromPrev;                    newZ = keyFrames[i].z + (keyFrames[i + 1].z - keyFrames[i].z) * d / keyFrames[i + 1].distFromPrev;                            bool teleport = false;                    if (keyFrames[i].mapid != cM) {                        teleport = true;                         cM = keyFrames[i].mapid;                    }//                    sLog.outString("T: %d, D: %f, x: %f, y: %f, z: %f", t, d, newX, newY, newZ);                    WayPoint pos(keyFrames[i].mapid, newX, newY, newZ, teleport);                    if (teleport)                        m_WayPoints[t] = pos;                }                                if (tFrom < tTo) {  // caught in tFrom dock's "gravitational pull"                    if (tFrom <= 30000) {                        d = 0.5 * (tFrom / 1000) * (tFrom / 1000);                    } else {                        d = 0.5 * 30 * 30 + 30 * ((tFrom - 30000) / 1000);                    }                    d = d - keyFrames[i].distSinceStop;                } else {                    if (tTo <= 30000) {                        d = 0.5 * (tTo / 1000) * (tTo / 1000);                    } else {                        d = 0.5 * 30 * 30 + 30 * ((tTo - 30000) / 1000);                    }                    d = keyFrames[i].distUntilStop - d;                }                t += 100;            }            t -= 100;        }        if (keyFrames[i + 1].tFrom > keyFrames[i + 1].tTo)            t += 100 - ((long)keyFrames[i + 1].tTo % 100);        else            t += (long)keyFrames[i + 1].tTo % 100;            bool teleport = false;        if ((keyFrames[i + 1].actionflag == 1) || (keyFrames[i + 1].mapid != keyFrames[i].mapid)) {            teleport = true;            cM = keyFrames[i + 1].mapid;        }                WayPoint pos(keyFrames[i + 1].mapid, keyFrames[i + 1].x, keyFrames[i + 1].y, keyFrames[i + 1].z, teleport);        //        sLog.outString("T: %d, x: %f, y: %f, z: %f, t:%d", t, pos.x, pos.y, pos.z, teleport);                //if (teleport)            m_WayPoints[t] = pos;                t += keyFrames[i + 1].delay * 1000;//        sLog.outString("------");    }    uint32 timer = t;//    sLog.outDetail("    Generated %d waypoints, total time %u.", m_WayPoints.size(), timer);        m_curr = m_WayPoints.begin();    m_curr = GetNextWayPoint();    m_next = GetNextWayPoint();    m_pathTime = timer;        m_lastMovement = getMSTime();    m_nextNodeTime = m_curr->first;    m_curMap = m_curr->second.mapid;    return true;}
开发者ID:Artea,项目名称:mangos-svn,代码行数:101,



注:本文中的GetNextWayPoint函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ GetNumPlayers函数代码示例
C++ GetNextView函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。