Community Forum
ANVEL Licensing Options

World::Oject ID problem



  • When I call GetID() on a world object associated with a vehicle, it looks like the function returns the Type ID, not the Full ID (unique ID) for that world object. Example:

    void MyFunction(Sensor *s) {
    
      s->SetParentByLocality();    // attach the sensor to a vehicle
      World::Object *parentWorldObj = s->GetWorldObject()->GetParent();    // get the sensor's parent world object
      LogMessage("Parent ID: " + StringConverter::ToString(parentWorldObj->GetId());    // this prints a value that matches the 'Type ID' property of the vehicle's world object, rather than the 'Full ID'
    
    }
    

    What am I missing?



  • Good morning,
    In this circumstance, you should call the GetComplexID() method on pParent instead of GetId(). That will return the specialized ID type, which in this case should be either a Vehicle, or a Vehicle Object.

    Here's a code sample, similar to what is used to get the owning ID, to grab the specific ID of the parent vehicle:

    ID parentID = pParent->GetComplexID();
    Vehicles::Vehicle* pVehicle = nullptr;
    
    //if we are a vehicle object, or a vehicle itself, attach to the vehicle
    if ( GetDataType( parentID ) == Types::VehicleObject )
    {
        Vehicles::Object* pVehObj = static_cast<Vehicles::Object*>( pParent );
        pVehicle = pVehObj->GetOwner();
    }
    else if ( GetDataType( parentID ) == Types::Vehicle )
    {
        pVehicle = Vehicles::Manager::GetSingleton().GetVehicle( parentID );
    }
    

    Please let us know how that works for you.

    Thanks,
    The ANVEL Team