当前位置: 首页>>代码示例>>C++>>正文


C++ Transport::AddToWorld方法代码示例

本文整理汇总了C++中Transport::AddToWorld方法的典型用法代码示例。如果您正苦于以下问题:C++ Transport::AddToWorld方法的具体用法?C++ Transport::AddToWorld怎么用?C++ Transport::AddToWorld使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Transport的用法示例。


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

示例1: LoadTransportInMap

Transport* MapManager::LoadTransportInMap(Map* instance, uint32 goEntry, uint32 period)
{
    const GameObjectTemplate* goInfo = sObjectMgr->GetGameObjectTemplate(goEntry);

    if(!goInfo)
    {
        sLog->outErrorDb("Transport ID:%u, will not be loaded, gameobject_template missing", goEntry);
        return NULL;
    }

    if(goInfo->type != GAMEOBJECT_TYPE_MO_TRANSPORT)
    {
        sLog->outErrorDb("Transport ID:%u, Name: %s, will not be loaded, gameobject_template type wrong", goEntry, goInfo->name.c_str());
        return NULL;
    }

    Transport* t = new Transport(period, goInfo->ScriptId);
    std::set<uint32> mapsUsed;
    if(!t->GenerateWaypoints(goInfo->moTransport.taxiPathId, mapsUsed))
    {
        sLog->outErrorDb("Transport (path id %u) path size = 0. Transport ignored, check DBC files or the gameobject's data0 field.", goInfo->moTransport.taxiPathId);
        delete t;
        return NULL;
    }
    uint32 transportLowGuid = sObjectMgr->GenerateLowGuid(HIGHGUID_MO_TRANSPORT);

    if(!t->Create(transportLowGuid, goEntry, t->m_WayPoints[0].mapid, t->m_WayPoints[0].x, t->m_WayPoints[0].y, t->m_WayPoints[0].z-10, 0.0f, 0, 0))
    {
        delete t;
        return NULL;
    }

    m_Transports.insert(t);
    for(std::set<uint32>::const_iterator i = mapsUsed.begin(); i != mapsUsed.end(); ++i)
        m_TransportsByMap[*i].insert(t);
    t->SetMap(instance);
    t->AddToWorld();
    t->BuildStartMovePacket(instance);
    t->BuildStopMovePacket(instance);
    // Make transport realy stoppped at server-side. Movement will be handled by scripts
    t->m_WayPoints.clear();

    return t;
}
开发者ID:ahuraa,项目名称:ServerMythCore,代码行数:44,代码来源:Transport.cpp

示例2: CreateTransportsOnMap

void MapManager::CreateTransportsOnMap(Map* map)
{
    // no transports on this map?
    if (m_TransportInfosByMap.find(map->GetId()) == m_TransportInfosByMap.end())
        return;

    for (auto ti : m_TransportInfosByMap[map->GetId()])
    {
        Transport* t = new Transport;
        t->m_period = ti->period;

        std::set<uint32> mapsUsed;

        // skip transports with empty waypoints list
        if (!t->GenerateWaypoints(ti->pathid, mapsUsed))
        {
            sLog.outErrorDb("Transport (path id %u) path size = 0. Transport not created, check DBC files or transport GO data0 field.", ti->pathid);
            delete t;
            continue;
        }

        // creates the Gameobject
        if (!t->Create(ti->entry, map->GetId(), ti->pos.x, ti->pos.y, ti->pos.z, ti->pos.o, GO_ANIMPROGRESS_DEFAULT, 0))
        {
            delete t;
            continue;
        }

        m_Transports.insert(t);

        for (uint32 i : mapsUsed)
            m_TransportsByMap[i].insert(t);

        // link transport to the map on which it spawns (its first waypoint)
        t->SetMap(map);

        // add the transport to world
        t->AddToWorld();
    }
}
开发者ID:michalpolko,项目名称:cmangos,代码行数:40,代码来源:Transports.cpp

示例3: LoadTransportInMap

Transport* MapManager::LoadTransportInMap(Map* instance, uint32 goEntry, uint32 period)
{
    const GameObjectTemplate* goInfo = sObjectMgr->GetGameObjectTemplate(goEntry);

    if (!goInfo)
    {
        return NULL;
    }

    if (goInfo->type != GAMEOBJECT_TYPE_MO_TRANSPORT)
    {
        return NULL;
    }

    Transport* t = new Transport(period, goInfo->ScriptId);
    std::set<uint32> mapsUsed;
    if (!t->GenerateWaypoints(goInfo->moTransport.taxiPathId, mapsUsed))
    {
        delete t;
        return NULL;
    }
    uint32 transportLowGuid = sObjectMgr->GenerateLowGuid(HIGHGUID_MO_TRANSPORT);

    if (!t->Create(transportLowGuid, goEntry, t->m_WayPoints[0].mapid, t->m_WayPoints[0].x, t->m_WayPoints[0].y, t->m_WayPoints[0].z-10, 0.0f, 0, 0))
    {
        delete t;
        return NULL;
    }

    m_Transports.insert(t);
    m_TransportsByInstanceIdMap[instance->GetInstanceId()].insert(t);
    t->SetMap(instance);
    t->AddToWorld();

    return t;
}
开发者ID:mynew2,项目名称:Gunship,代码行数:36,代码来源:Transport.cpp

示例4: LoadTransports

void MapManager::LoadTransports()
{
    uint32 oldMSTime = getMSTime();

    QueryResult result = WorldDatabase.Query("SELECT guid, entry, name, period, ScriptName FROM transports");

    if(!result)
    {
        sLog->outString(">> Loaded 0 transports. DB table `transports` is empty!");
        sLog->outString();
        return;
    }

    uint32 count = 0;

    do
    {
        Field* fields = result->Fetch();
        uint32 lowguid = fields[0].GetUInt32();
        uint32 entry = fields[1].GetUInt32();
        std::string name = fields[2].GetString();
        uint32 period = fields[3].GetUInt32();
        uint32 scriptId = sObjectMgr->GetScriptId(fields[4].GetCString());

        const GameObjectTemplate* goinfo = sObjectMgr->GetGameObjectTemplate(entry);

        if(!goinfo)
        {
            sLog->outErrorDb("Transport ID:%u, Name: %s, will not be loaded, gameobject_template missing", entry, name.c_str());
            continue;
        }

        if(goinfo->type != GAMEOBJECT_TYPE_MO_TRANSPORT)
        {
            sLog->outErrorDb("Transport ID:%u, Name: %s, will not be loaded, gameobject_template type wrong", entry, name.c_str());
            continue;
        }

        // sLog->outString("Loading transport %d between %s, %s", entry, name.c_str(), goinfo->name);

        std::set<uint32> mapsUsed;

        Transport* t = new Transport(period, scriptId);
        if(!t->GenerateWaypoints(goinfo->moTransport.taxiPathId, mapsUsed))
            // skip transports with empty waypoints list
        {
            sLog->outErrorDb("Transport (path id %u) path size = 0. Transport ignored, check DBC files or transport GO data0 field.", goinfo->moTransport.taxiPathId);
            delete t;
            continue;
        }

        float x = t->m_WayPoints[0].x;
        float y = t->m_WayPoints[0].y;
        float z = t->m_WayPoints[0].z;
        uint32 mapid = t->m_WayPoints[0].mapid;
        float o = 1.0f;

         // creates the Gameobject
        if(!t->Create(lowguid, entry, mapid, x, y, z, o, 100, 0))
        {
            delete t;
            continue;
        }

        m_Transports.insert(t);

        for(std::set<uint32>::const_iterator i = mapsUsed.begin(); i != mapsUsed.end(); ++i)
            m_TransportsByMap[*i].insert(t);

        //If we someday decide to use the grid to track transports, here:
        t->SetMap(sMapMgr->CreateMap(mapid, t, 0));
        t->AddToWorld();

        ++count;
    }
    while(result->NextRow());

    // check transport data DB integrity
    result = WorldDatabase.Query("SELECT gameobject.guid, gameobject.id, transports.name FROM gameobject, transports WHERE gameobject.id = transports.entry");
    if(result)                                              // wrong data found
    {
        do
        {
            Field* fields = result->Fetch();

            uint32 guid  = fields[0].GetUInt32();
            uint32 entry = fields[1].GetUInt32();
            std::string name = fields[2].GetString();
            sLog->outErrorDb("Transport %u '%s' have record (GUID: %u) in `gameobject`. Transports must not have any records in `gameobject` or its behavior will be unpredictable/bugged.", entry, name.c_str(), guid);
        }
        while(result->NextRow());
    }

    sLog->outString(">> Loaded %u transports in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
    sLog->outString();
}
开发者ID:ahuraa,项目名称:ServerMythCore,代码行数:96,代码来源:Transport.cpp


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