RETCODE World::EntityLoad_Waypoint(hQBSP qbsp, const EntityParse & entityDat)
{
    string wayPtName = entityDat.GetVal("ID");

    Id wayPtID = WaypointGet(wayPtName.c_str());

    Waypoint * pWayPt = (Waypoint *)IDPageQuery(wayPtID);

    if(!pWayPt) //create the waypoint if it does not exist
    {
        pWayPt = new Waypoint(wayPtName.c_str());

        //add it to the waypoint list
        m_waypts.push_back(pWayPt);
    }

    //add new node
    wayPt newPt;
    memset(&newPt, 0, sizeof(wayPt));

    //get index
    sscanf(entityDat.GetVal("Index"), "%d", &newPt.ind);

    //get location
    sscanf(entityDat.GetVal("origin"), "%f %f %f",
           &newPt.pt.x, &newPt.pt.z, &newPt.pt.y);

    newPt.pt.z *= -1;

    //get delay
    const char * pDelayStr = entityDat.GetVal("delay");

    if(pDelayStr)
        sscanf(pDelayStr, "%lf", &newPt.delay);
    else
        newPt.delay = 0;

    //////////////////////////////////////////
    //See if we are targeting something
    //If so, set target
    const char * pTargetStr = entityDat.GetVal("target");
    if(pTargetStr)
        TargetGet(pTargetStr, newPt.target);

    pWayPt->AddWayPt(newPt);

    return RETCODE_SUCCESS;
}