Capabilities

Documentatie voor versie v0.1.0-beta.3Bron bekijken op GitHub

Vertaling van de oorspronkelijke Engelse pagina voor OmsiLaunch 0.1.0-beta3. De Engelse pagina is normatief: bij verschillen gelden de Engelse pagina en de code.

Dit is de canonieke inventaris van wat OmsiLaunch 0.1.0-beta3 kan. Deze is afgeleid van PublicCapabilityRegistry (src/OmsiLaunch.Api/PublicCapabilityRegistry.cs), de runtime-implementatie in de plugin (src/OmsiLaunch.Plugin/CurrentRuntimeControl.cs en src/OmsiLaunch.Interop/OmsiRuntimeReaders.cs) en OmsiLaunchService.GetCapabilitiesAsync. Per capability worden vermeld: de classificatie, het stabiliteitsniveau dat in deze hele documentatie wordt gebruikt, of een sessie in de toestand Running vereist is, of OMSI erdoor wordt gewijzigd, de argumenten en resultaatsleutels, de fouten en het bewijs van runtimevalidatie. Hoe je een operatie aanroept (CLI-routes, API-envelope, timeouts, handles) staat in runtime control; de bewijstabel staat in status van runtimevalidatie.

Classificatie en stabiliteit#

PublicCapabilityClassification heeft vier waarden. Ze worden als volgt op de stabiliteitsterminologie afgebeeld, met afwaarderingen waar het bewijs onvolledig is:

ClassificatieBetekenisStabiliteit
PublicStableBetaOpenbaar, onderdeel van het bètacontract, runtime-gevalideerdSTABLE_BETA (afgewaardeerd tot PARTIAL waar vermeld)
PublicExperimentalOpenbaar, kan veranderen, runtime-gevalideerd of statisch gevalideerdEXPERIMENTAL (afgewaardeerd tot PARTIAL waar vermeld)
InternalOnlyOnderzoeksprimitief; niet bereikbaar via de openbare API of de CLIINTERNAL
UnsupportedHerkend voor diagnose, geweigerd of afwezigUNAVAILABLE

PublicCapabilityKind onderscheidt Read, Write, Action en Event. Elke runtime-capability vereist een sessie in de toestand Running en exact het profiel Omsi23004_692EBFBF (RequiresSession / RequiresExactProfile in het register); sessie-capabilities die een sessie aanmaken vereisen het exacte profiel, maar geen sessie.

Runtimeresultaten zijn dictionaries van strings. Sleutels die beginnen met internal_ of eindigen op _address, _pointer of _vmt worden aan de API-grens verwijderd (ScrubInternalValues) en worden hier niet vermeld. De resultaatsleutels in de onderstaande operatietabellen zijn exact de sleutelverzamelingen die het product retourneert: ze zijn vastgelegd door elke openbare operatie in een echte sessie uit te voeren (documentatieopname van de runtime closure, sessie f51dcb59-a723-4570-b6c5-b61e628a7993, situations\Linie 5.osn; lijstrijen worden geschreven als <row>.<n>.<field>).

Hoe het mislukken van een operatie wordt gerapporteerd (CurrentRuntimeControl.Execute):

FoutErrorCodeValues
Weigering door het register (onbekende of internal.*-operatie, ontbrekend verplicht argument)OL_E_RUNTIME_OPERATION_UNKNOWN, OL_E_RUNTIME_ARGUMENT_REQUIREDgeen
Een bewuste weigering door het product (weather.set)de specifieke code (OL_E_RUNTIME_SETTING_NOT_PERSISTENT)detail (zin)
Een D3D-foutde specifieke OL_E_D3D_*-codedetail, native_status
Elke andere fout aan de pluginzijde (verouderde handle, onbekende naam, waarde buiten bereik, geen spelersvoertuig, ...)OL_E_RUNTIME_OPERATION_FAILEDdetail (begint met de specifieke code, bijvoorbeeld OL_E_RUNTIME_OBJECT_HANDLE_STALE of OL_E_RUNTIME_VALUE_OUT_OF_RANGE (Parameter 'minute')), exception (.NET-typenaam)
Een resultaat dat niet in de mailbox van 64 KiB pastOL_E_RUNTIME_RESPONSE_TOO_LARGE (begrensde lijsten worden in plaats daarvan ingekort, zie Dienstregeling, chauffeurs, kaartjes)geen

De kolom Errors (Fouten) van elke tabel noemt de specifieke codes; lees ze uit ErrorCode of uit het eerste token van Values.detail, zoals hierboven beschreven.

Sessie-capabilities#

CapabilityClassificatieStabiliteitSoortAPI-routeCLI-routeWijzigtValidatie
session.planPublicStableBetaSTABLE_BETAActionPlanSessionAsync/plan, /validateneeRUNTIME_PASS (elke gevalideerde sessie begint met een plan)
session.startPublicStableBetaSTABLE_BETAActionStartSessionAsyncstartvlaggenbestandssysteem (transactie), procesRUNTIME_PASS (NEW_MAP Grundorf, SAVED_SITUATION Berlin-Spandau)
session.statusPublicStableBetaSTABLE_BETAReadGetStatusAsyncsession statusneeRUNTIME_PASS
session.stopPublicStableBetaSTABLE_BETAActionStopAsync / CloseAsyncsession stop, systeemvak, Ctrl+Cproces (TerminateProcess), bestandssysteem (herstel)RUNTIME_PASS; coöperatief afsluiten niet geïmplementeerd
session.recoverPublicStableBetaSTABLE_BETAActionRecoverPendingAsync/recovery-status, /recoverbestandssysteem (herstel)RUNTIME_PASS: recovery na vroegtijdig afsluiten (RV-008), eigenaar beëindigd plus vroege recovery bij de volgende start (S05), mislukt herstel en daarna /recover (F01), weigering onder de lease, met een verweesd OMSI-proces en in het venster vóór de PID (S04, S04b)
events.readPublicExperimentalEXPERIMENTALEventGetStatusAsync().RuntimeEvents, control session.eventsevents read, events watchneeRUNTIME_PASS; het telemetrieslot met alleen de laatste waarde kan pieken verliezen

Runtime-capabilities (registervermeldingen)#

CapabilityClassificatieStabiliteitSoortOperatiesHandlesValidatie
time.readPublicStableBetaSTABLE_BETAReadtime.readRUNTIME_PASS (sessie e5454061)
time.setPublicExperimentalEXPERIMENTALWritetime.setRUNTIME_PASS (schrijven, SetTime, teruglezen)
weather.readPublicStableBetaSTABLE_BETAReadweather.readRUNTIME_PASS
weather.setUnsupportedUNAVAILABLEWriteweather.setRUNTIME_REJECTED: altijd OL_E_RUNTIME_SETTING_NOT_PERSISTENT (sessie 50a1f1ec)
weather.actual.readPublicExperimentalEXPERIMENTALReadweather.actual.readRUNTIME_PASS
map.readPublicStableBetaSTABLE_BETAReadmap.readRUNTIME_PASS: opnieuw gevalideerd op het gecorrigeerde kaartslot (sessie 9dd62626-94c6-4cd7-bb6f-0288327696f4, Grundorf) en gelezen op Berlin-Spandau in de documentatieopname
camera.readPublicStableBetaSTABLE_BETAReadcamera.readRUNTIME_PASS
camera.setPublicExperimentalEXPERIMENTALWritecamera.setRUNTIME_PASS (FOV schrijven en teruglezen)
camera.lockPublicExperimentalEXPERIMENTALActioncamera.lock, camera.unlockRUNTIME_PASS met een PlayerVehicle uit een opgeslagen situatie (runtime closure CAM01, families 0, 2 en 1 met teruglezen, daarna ontgrendelen). De eigen RuntimeValidation-string van het register luidt nog steeds STATICALLY_VALIDATED (zelfrapportage van het product, in deze release niet bijgewerkt)
vehicles.listPublicStableBetaSTABLE_BETAReadroad-vehicles.listRoadVehicleRUNTIME_PASS
vehicles.getPublicStableBetaSTABLE_BETAReadroad-vehicle.readRoadVehicleRUNTIME_PASS; detectie van verouderde handles na natuurlijke verwijdering (RV-002) heeft geen veilige runtimeproducent en is offline gevalideerd
vehicles.summaryPublicStableBetaSTABLE_BETAReadroad-vehicles.readRUNTIME_PASS
vehicles.spawnPublicExperimentalEXPERIMENTALActionroad-vehicles.spawnRoadVehicleRUNTIME_PASS RV-003 (sessie 5f641c8d, 2 -> 3, handle rv-000003)
vehicles.place-randomPublicExperimentalEXPERIMENTALActionroad-vehicles.place-randomRUNTIME_PASS (collectie 2 -> 4)
player.readPublicStableBetaSTABLE_BETAReadplayer-vehicle.readRoadVehicleRUNTIME_PASS: present=false bij een headless start, de volledige snapshot bij een opgeslagen situatie
humans.listPublicExperimentalEXPERIMENTALReadhumans.listHumanRUNTIME_PASS
humans.getPublicExperimentalEXPERIMENTALReadhuman.readHumanRUNTIME_PASS
humans.summaryPublicExperimentalEXPERIMENTALReadhumans.readRUNTIME_PASS
timetable.readPublicStableBetaSTABLE_BETAReadtimetable.read en de familie timetable.*.list / timetable.logs.readRUNTIME_PASS (trackitems: 91 records op Grundorf)
scripts.numericPublicExperimentalEXPERIMENTALWritevehicle.variables.list, vehicle.variable.get, vehicle.variable.setRoadVehicleRUNTIME_PASS (Refresh_Strings 0 -> 1 -> 0)
scripts.string.readPublicExperimentalEXPERIMENTALReadvehicle.string-variables.list, vehicle.string-variable.getRoadVehicleRUNTIME_PASS (alleen lezen; schrijven BI-004)
constantsPublicStableBetaSTABLE_BETAReadvehicle.constants.list, vehicle.constant.getRoadVehicleRUNTIME_PASS
curvesPublicStableBetaSTABLE_BETAReadvehicle.curves.list, vehicle.curve.evaluateRoadVehicleRUNTIME_PASS
hof.readPublicStableBetaSTABLE_BETAReadvehicle.hofs.readRoadVehicleRUNTIME_PASS
drivers.readPublicExperimentalEXPERIMENTALReaddrivers.readRUNTIME_PASS
tickets.readPublicExperimentalEXPERIMENTALReadtickets.readRUNTIME_PASS
d3d.texturePublicExperimentalEXPERIMENTALActiond3d.status, d3d.texture.create, d3d.texture.describe, d3d.texture.update, d3d.texture.releaseD3DTextureRUNTIME_PASS voor create/describe/update/release, weigering van vrijgegeven en verouderde handles over hernieuwd aanmaken en sessies heen (H02), en apparaatreset met invalidatie van de generatie (RV-007, D01; lost zelf is niet opgetreden)
internal.make-basicInternalOnlyINTERNALActioninternal.road-vehicles.make-basicNiet openbaar. ExecuteRuntimeAsync weigert deze met OL_E_RUNTIME_OPERATION_UNKNOWN vóór het opzoeken van een sessie; de CLI heeft er geen route voor.
calendar.set-actual-date-timeUnsupportedUNAVAILABLEWritegeenUNSUPPORTED (BI-002)
player.assign-headlessUnsupportedUNAVAILABLEActiongeenUNSUPPORTED (BI-007)

internal.road-vehicles.make-basic is INTERNAL: de operatie bestaat in de plugin voor onderzoek (ze retourneert een native adres) en wordt geweigerd aan de API-grens en door het lokale control plane, die beide de operatienaam eerst tegen PublicRuntimeOperationIds valideren.

Openbare runtime-operaties#

Dit is de exacte lijst van operatie-id's die een openbare frontend mag doorsturen (PublicCapabilityRegistry.PublicRuntimeOperationIds). Elke operatie vereist SessionState.Running; geen enkele wordt in het journal vastgelegd of hersteld. Verplichte argumenten worden door het register afgedwongen voordat de mailbox wordt gebruikt (OL_E_RUNTIME_ARGUMENT_REQUIRED); optionele argumenten worden door de plugin gevalideerd. Algemene foutcodes voor alle operaties: OL_E_RUNTIME_OPERATION_UNKNOWN (niet in deze lijst), OL_E_SESSION_NOT_RUNNING, OL_E_RUNTIME_SESSION_MISMATCH, OL_E_RUNTIME_CHANNEL_BUSY, OL_E_RUNTIME_CHANNEL_CLOSED, OL_E_RUNTIME_REQUEST_TIMEOUT, OL_E_RUNTIME_REQUEST_ID_REUSED, OL_E_RUNTIME_RESPONSE_INVALID, OL_E_RUNTIME_RESPONSE_TOO_LARGE, OL_E_RUNTIME_OPERATION_UNAVAILABLE (de plugin heeft geen implementatie), OL_E_RUNTIME_OPERATION_FAILED (onverwachte exceptie binnen het proces; waarden detail en exception).

Tijd#

OperatieSoortArgumentenResultaatsleutelsFouten
time.readReadgeenhour, minute, second, day, month, year
time.setWriteoptioneel hour (0..23), minute (0..59), second (0..59.999, decimaal); minstens éénde sleutels van time.read na de geprofileerde SetTimeOL_E_RUNTIME_ARGUMENT_REQUIRED, OL_E_RUNTIME_VALUE_OUT_OF_RANGE, OL_E_TIME_APPLY_FAILED

Weer#

OperatieSoortArgumentenResultaatsleutelsFouten
weather.readReadgeenfog_density, lightness, primary_light_factor, secondary_light_factor, ambient_light_factor, cloud_type, cloud_transparency, precipitation_set, wet_ground, wind_speed, wind_direction, relative_humidity, absolute_humidity, temperature, dew_point, pressure, precipitation, precipitation_rate
weather.setWritewillekeuriggeenAltijd OL_E_RUNTIME_SETTING_NOT_PERSISTENT (lege argumenten: OL_E_RUNTIME_ARGUMENT_REQUIRED). OMSI overschrijft beide geprofileerde windkandidaten bij zijn volgende weertick.
weather.actual.readReadgeenactive, icao, last_downloaded, invalid_icao, counter, process

Kaart#

OperatieSoortArgumentenResultaatsleutelsFouten
map.readReadgeenloaded, loaded_tiles, left_hand_traffic, name, filename, friendly_name, description, max_speed, year_start, year_end

Camera#

OperatieSoortArgumentenResultaatsleutelsFouten
camera.readReadgeenfamily (0 chauffeur, 1 passagier, 2 extern, 3 kaart), name, field_of_view, normal_field_of_view, distance
camera.setWriteoptioneel family (0..3), field_of_view (10..170); minstens éénde sleutels van camera.readOL_E_RUNTIME_ARGUMENT_REQUIRED, OL_E_RUNTIME_VALUE_OUT_OF_RANGE
camera.lockActionverplicht family (0..3); optioneel preset (0..255, alleen met familie 0 of 1)locked (true), family, preset, head_look (preserved), field_of_view (preserved)OL_E_RUNTIME_ARGUMENT_REQUIRED, OL_E_RUNTIME_VALUE_OUT_OF_RANGE, OL_E_CAMERA_PRESET_FAMILY_UNSUPPORTED, OL_E_RUNTIME_PLAYER_VEHICLE_UNAVAILABLE. Het beleid wordt elke 100 ms opnieuw toegepast tot camera.unlock; een mislukte hernieuwde toepassing geeft eenmaal per afzonderlijke fout de gebeurtenis camera.lock.degraded.
camera.unlockActiongeenlocked (false)

Wegvoertuigen en speler#

OperatieSoortArgumentenResultaatsleutelsFouten
road-vehicles.readReadgeencount, ai_collection, player_index (de ruwe spelersvoertuigindex van OMSI, gerapporteerd zoals gelezen; gebruik present van player-vehicle.read om te weten of er een spelersvoertuig bestaat)
road-vehicles.listReadgeencount, vehicle.<n>.handle (rv-NNNNNN)
road-vehicle.readReadverplicht handlehandle, runtime_index, tile, marked_for_killing, traffic_type, position_x, position_y, position_z, rotation_x, rotation_y, rotation_z, rotation_w, steering, tacho, ground_speed, kilometres, throttle, brake, clutch, ai_enabled, ai_mode, ai_light, ai_interior_light, ai_indicator_left, ai_indicator_right, ai_brake_lightOL_E_RUNTIME_OBJECT_HANDLE_REQUIRED, OL_E_RUNTIME_OBJECT_HANDLE_STALE
player-vehicle.readReadgeenpresent (false als OMSI geen spelersvoertuig heeft); bij true: player_index plus elke sleutel van road-vehicle.read
road-vehicles.spawnActionverplicht model (canoniek Vehicles\...\*.bus, maximaal 240 tekens, geen .., moet onder de installatie bestaan)bus, created_handle, before_count, after_count, delta_count, raw_native_return, identity_validationOL_E_RUNTIME_ARGUMENT_REQUIRED, OL_E_RUNTIME_BUS_IDENTITY_INVALID, OL_E_MAKEVEHICLE_BUS_NOT_FOUND, OL_E_MAKEVEHICLE_DELTA_ZERO, OL_E_MAKEVEHICLE_DELTA_MULTIPLE, OL_E_MAKEVEHICLE_NATIVE_FAILED, OL_E_RUNTIME_CREATED_OBJECT_INVALID, OL_E_RUNTIME_CREATED_OBJECT_NOT_IN_COLLECTION. Wijst het PlayerVehicle niet toe. Duurt enkele seconden; gebruik de clienttimeout van 30 s.
road-vehicles.place-randomActionoptioneel ai_type (0..255, standaard 0), group (0..65535, standaard 1), type (-1..65535, standaard -1), scheduled (0..1, standaard 0), tour (0..65535, standaard 0), line (0..65535, standaard 0)raw_return, before_count, after_count, delta_count, identity_validation (native-placement-return-is-diagnostic-only)OL_E_RUNTIME_VALUE_OUT_OF_RANGE, OL_E_PLACE_RANDOM_BUS_FAILED

Mensen#

OperatieSoortArgumentenResultaatsleutelsFouten
humans.readReadgeencount
humans.listReadgeencount, human.<n>.handle (hb-NNNNNN)
human.readReadverplicht handlehandle, runtime_index, human_index, tile, marked_for_killing, collision_type, position_x, position_y, position_z, target_x, target_y, target_z, target_station, pre_target_station, departure, enter_bus_at, seat_bus, seat_station, ticket_type, ticket_index, ticket_ready, state, speed, bus_index, station, ai_mode, ai_mode_ex, ai_sub_mode, collision_stateOL_E_RUNTIME_OBJECT_HANDLE_REQUIRED, OL_E_RUNTIME_OBJECT_HANDLE_STALE

Dienstregeling, chauffeurs, kaartjes#

Resultaten van begrensde lijsten bevatten count (alle records in OMSI), returned_count (rijen in dit antwoord) en truncated (true als er rijen zijn weggelaten). De rijen zijn altijd de eerste returned_count records, genummerd vanaf 0. De rijlimieten zijn 128 voor tracks, ritten, lijnen, rv-bestanden, haltes, stationsverbindingen, omlopen en profielen, 256 voor omloopitems en 512 voor trackitems. Als de rijen die deze limiet toestaat nog steeds groter zijn dan de mailbox van 64 KiB (bijvoorbeeld trackitems en omloopitems op Berlin-Spandau), laat de plugin de laatste rijen weg tot het antwoord past en rapporteert de kleinere returned_count met truncated=true (documentatie-audit BUG-05; vóór de correctie mislukten deze twee lijsten met OL_E_RUNTIME_RESPONSE_TOO_LARGE). timetable.logs.read is geen begrensde lijst: de operatie retourneert elk logitem, en een log van een paar honderd items overschrijdt de mailbox en mislukt met OL_E_RUNTIME_RESPONSE_TOO_LARGE.

OperatieSoortArgumentenResultaatsleutelsFouten
timetable.readReadgeeninvalid (true/false), en de recordaantallen tracks, trips, bus_stops, station_links, lines, rv_files
timetable.tracks.listReadgeencount, returned_count, truncated; track.<n>.filename, track.<n>.path, track.<n>.entries, track.<n>.length
timetable.trips.listReadgeencount, returned_count, truncated; trip.<n>.filename, trip.<n>.chrono_origin, trip.<n>.target, trip.<n>.line, trip.<n>.track_index, trip.<n>.track_name, trip.<n>.bus_stops, trip.<n>.profiles, trip.<n>.train_reverse, trip.<n>.invalid
timetable.lines.listReadgeencount, returned_count, truncated; line.<n>.name, line.<n>.chrono_origin, line.<n>.priority, line.<n>.tours, line.<n>.user_allowed
timetable.rv-files.listReadgeencount, returned_count, truncated; rv_file.<n>.line, rv_file.<n>.number_tours, rv_file.<n>.start_date_rel_2000, rv_file.<n>.end_date_rel_2000, rv_file.<n>.type_line_files, rv_file.<n>.type_line_probability, rv_file.<n>.type_tours
timetable.track-entries.listReadgeencount, returned_count, truncated; track_entry.<n>.track_index, track_entry.<n>.id, track_entry.<n>.path_index_on_object, track_entry.<n>.path_tile, track_entry.<n>.path_index, track_entry.<n>.relative_distance, track_entry.<n>.distance, track_entry.<n>.valid, track_entry.<n>.path_order_check, track_entry.<n>.allowed_fstrn, track_entry.<n>.chrono_origin, track_entry.<n>.bad_chronos
timetable.bus-stops.listReadgeencount, returned_count, truncated; bus_stop.<n>.name, bus_stop.<n>.supplement, bus_stop.<n>.tile, bus_stop.<n>.id, bus_stop.<n>.parent_id, bus_stop.<n>.preset_alighting, bus_stop.<n>.index, bus_stop.<n>.starting_links, bus_stop.<n>.ending_links, bus_stop.<n>.chrono_origin
timetable.station-links.listReadgeencount, returned_count, truncated; station_link.<n>.length, station_link.<n>.start_bus_stop_id, station_link.<n>.end_bus_stop_id, station_link.<n>.start_bus_stop, station_link.<n>.end_bus_stop, station_link.<n>.chrono_origin, station_link.<n>.valid, station_link.<n>.visible, station_link.<n>.track_entries, station_link.<n>.start_track_entry, station_link.<n>.end_track_entry
timetable.tours.listReadgeencount, returned_count, truncated; tour.<n>.line_index, tour.<n>.name, tour.<n>.ai_group, tour.<n>.ai_group_index, tour.<n>.ai_type, tour.<n>.completed_day, tour.<n>.entries, tour.<n>.has_normal_vehicle, tour.<n>.invalid, tour.<n>.vehicle_indices, tour.<n>.vehicle_reservations
timetable.profiles.listReadgeencount, returned_count, truncated; profile.<n>.trip_index, profile.<n>.name, profile.<n>.service_trip, profile.<n>.stop_times, profile.<n>.total_time, profile.<n>.track_entry_times
timetable.tour-entries.listReadgeencount, returned_count, truncated; tour_entry.<n>.line_index, tour_entry.<n>.tour_index, tour_entry.<n>.trip, tour_entry.<n>.trip_index, tour_entry.<n>.profile_index, tour_entry.<n>.start_time, tour_entry.<n>.end_time, tour_entry.<n>.smooth_transition
timetable.logs.readReadgeencount; log.<n>.bus_stop, log.<n>.estimated_arrival, log.<n>.estimated_departure, log.<n>.actual_arrival, log.<n>.actual_departure, log.<n>.arrival_ok, log.<n>.departure_ok (alle items; niet begrensd)OL_E_RUNTIME_RESPONSE_TOO_LARGE bij een lang log
drivers.readReadgeencount, selected_index; driver.<n>.filename, driver.<n>.name, driver.<n>.gender, driver.<n>.bus_stops, driver.<n>.crashes, driver.<n>.passengers, driver.<n>.tickets, driver.<n>.cash
tickets.readReadgeenfilename, voice_path, stamper_factor, buy_factor, chattiness, whinge_factor, count; ticket.<n>.name, ticket.<n>.display_name, ticket.<n>.value, ticket.<n>.maximum_stations, ticket.<n>.day_ticket

Voertuigscripts, constanten, curves, HOF (per handle)#

OperatieSoortArgumentenResultaatsleutelsFouten
vehicle.variables.listReadverplicht handlehandle, count, returned_count, truncated (limiet 512), name.<n>OL_E_RUNTIME_OBJECT_HANDLE_REQUIRED, OL_E_RUNTIME_OBJECT_HANDLE_STALE, OL_E_RUNTIME_SCRIPT_OBJECT_UNAVAILABLE
vehicle.variable.getReadverplicht handle, namehandle, name, valueOL_E_RUNTIME_VARIABLE_NOT_FOUND, OL_E_RUNTIME_VARIABLE_UNAVAILABLE
vehicle.variable.setWriteverplicht handle, name, value (eindige float)handle, name, requested_value, value (teruggelezen)OL_E_RUNTIME_VALUE_OUT_OF_RANGE, OL_E_RUNTIME_VARIABLE_NOT_FOUND
vehicle.string-variables.listReadverplicht handlehandle, count, returned_count, truncated (limiet 512), name.<n>OL_E_RUNTIME_OBJECT_HANDLE_REQUIRED, OL_E_RUNTIME_OBJECT_HANDLE_STALE, OL_E_RUNTIME_SCRIPT_OBJECT_UNAVAILABLE
vehicle.string-variable.getReadverplicht handle, namehandle, name, valueOL_E_RUNTIME_STRING_VARIABLE_NOT_FOUND
vehicle.constants.listReadverplicht handlehandle, count, name.<n>OL_E_RUNTIME_CONSTANTS_UNAVAILABLE
vehicle.constant.getReadverplicht handle, namehandle, name, valueOL_E_RUNTIME_CONSTANT_NOT_FOUND
vehicle.curves.listReadverplicht handlehandle, count, name.<n>
vehicle.curve.evaluateReadverplicht handle, name, x (eindige float; een ontbrekende of niet-numerieke x geeft OL_E_RUNTIME_ARGUMENT_REQUIRED)handle, name, x, value (lineaire interpolatie)OL_E_RUNTIME_CURVE_NOT_FOUND, OL_E_RUNTIME_CURVE_EMPTY, OL_E_RUNTIME_CURVE_INVALID, OL_E_RUNTIME_CURVE_DEGENERATE
vehicle.hofs.readReadverplicht handlehandle, count, hof.<n>.name, hof.<n>.service_tripOL_E_RUNTIME_HOF_UNAVAILABLE

Direct3D 9#

D3D-operaties worden via de native brug uitgevoerd op de hoofd-/renderthread van OMSI. Texturehandles hebben de vorm d3dtex-<sessionId N>-<16 hex digits>.

OperatieSoortArgumentenResultaatsleutelsFouten
d3d.statusReadgeenavailable, native_status, query_interface_hresult, cooperative_level_hresult, execution_thread_id, owned_device_references, state (NOT_READY, READY, LOST, RESETTING, STOPPING, STOPPED), transition, generation, live_textures, reset_hook_installed, last_reset_thread_id, binding
d3d.texture.createActionverplicht width (1..4096), height (1..4096), format (A8R8G8B8, X8R8G8B8, R5G6B5, X1R5G5B5, A1R5G5B5, A4R4G4B4, A8, L8, A8L8); optioneel levels (0..16, standaard 1)handle, state (LIVE, RELEASED, STALE), device_state, generation, width, height, format, levels, level, level_width, level_height, hresult, execution_thread_idOL_E_D3D_INVALID_ARGUMENT, OL_E_D3D_INVALID_TEXTURE_FORMAT, OL_E_D3D_NOT_READY, OL_E_D3D_DEVICE_LOST, OL_E_D3D_RESET_IN_PROGRESS, OL_E_D3D_NATIVE_CALL_FAILED
d3d.texture.describeReadverplicht handle; optioneel level (0..15, standaard 0)de 13 sleutels van d3d.texture.create, voor het gevraagde niveauOL_E_D3D_STALE_RESOURCE_HANDLE, OL_E_D3D_RESOURCE_RELEASED, plus de fouten van create
d3d.texture.updateActionverplicht handle, width (1..4096), height (1..4096), pixels_base64 (maximaal 48 KiB na decodering); optioneel level (0..15, standaard 0), x (0..4095, standaard 0), y (0..4095, standaard 0)de 13 sleutels van d3d.texture.create na de updateOL_E_D3D_INVALID_PIXEL_BUFFER, plus de fouten van describe
d3d.texture.releaseActionverplicht handlede 13 sleutels van d3d.texture.create met state = RELEASEDOL_E_D3D_RESOURCE_RELEASED bij herhaald vrijgeven, OL_E_D3D_STALE_RESOURCE_HANDLE

Mislukte D3D-operaties retourneren de waarden detail en native_status. De extensiemethoden van D3DRuntimeApi (GetD3DStatusAsync, CreateD3DTextureAsync, DescribeD3DTextureAsync, UpdateD3DTextureAsync, ReleaseD3DTextureAsync) omhullen deze operaties voor API-gebruikers.

Namen van GetCapabilitiesAsync#

IOmsiLaunch.GetCapabilitiesAsync(InstallationSpec) retourneert een statische lijst van Capability(Name, Available, EvidenceState, Reason)-records die de kijk van de host op de installatie beschrijven. Deze namen vormen een afzonderlijke, grovere terminologie dan de register-id's hierboven: het register is het contract voor operaties, de capabilitylijst is een machineleesbare samenvatting voor integrators. Het verband staat in de laatste kolom.

NaamBeschikbaarBewijsVerband
runtime.current-windows-x64afhankelijk van het platformSTATICALLY_VALIDATEDcompatibiliteit
runtime.command-channeltrueSTATICALLY_VALIDATEDruntime-mailbox
runtime.time.read, runtime.time.writetrueRUNTIME_VALIDATEDtime.read, time.set
runtime.time.actual-date-time.writefalseRELEASE_IF_CLOSEDcalendar.set-actual-date-time
runtime.map.readtrueRUNTIME_VALIDATEDmap.read
runtime.weather.read, runtime.weather.actual.readtrueRUNTIME_VALIDATEDweather.read, weather.actual.read
runtime.weather.writefalseRUNTIME_PARTIALweather.set (geweigerd)
runtime.camera.read, runtime.camera.writetrueRUNTIME_VALIDATEDcamera.read, camera.set
runtime.d3d.status, runtime.d3d.texture.create, runtime.d3d.texture.update, runtime.d3d.texture.describe, runtime.d3d.texture.releasetrueRUNTIME_VALIDATEDd3d.*
runtime.d3d.lifecycle.resettrueIMPLEMENTED_NOT_RUNTIME_VALIDATEDRV-007. De lijst is een vaste, door het product zelf gerapporteerde inventaris: deze vermelding is niet bijgewerkt nadat de runtime-closureronde de overgangen resetting/restored had waargenomen (D01); zie status van runtimevalidatie voor het bewijs
runtime.road-vehicles.read, runtime.road-vehicles.spawn, runtime.road-vehicles.place-randomtrueRUNTIME_VALIDATEDroad-vehicles.*
runtime.vehicle.variable.writetrueRUNTIME_VALIDATEDvehicle.variable.set
runtime.humans.read, runtime.timetable.read, runtime.timetable.track-entries.readtrueRUNTIME_VALIDATEDhumans.*, timetable.*
world.new-map, world.presented-entrypoint, world.saved-situationtrueRUNTIME_VALIDATEDwereldmodi van session.start
world.entrypoint-identityfalseRUNTIME_PARTIALBI-001
world.last-map-statefalseUNSUPPORTED_FOR_CURRENT_PROFILELastMapState (/last)
world.date.explicit, world.date.system, world.time.explicit, world.time.systemfalseSTATICALLY_PARTIAL/date, /time, /year; wie ze aanvraagt, maakt het plan niet uitvoerbaar
weather.preset, weather.icao, weather.real-currentfalseSTATICALLY_PARTIAL/weather*; wie ze aanvraagt, maakt het plan niet uitvoerbaar
player-vehicle.model, player-vehicle.repaint, player-vehicle.hof, player-vehicle.fleet-number, player-vehicle.registrationfalseSTATICALLY_PARTIAL/vehicle en verwante vlaggen; wie ze aanvraagt, maakt het plan niet uitvoerbaar
configuration.options.semantictrueSTATICALLY_VALIDATED/set, profiel-settings (RV-005 runtime)
input.keyboard.patch, input.controller.active-ffscaletrueSTATICALLY_VALIDATEDdocumentparsers bestaan; InputSpec wordt niet door een sessie toegepast (BI-005)
input.controller.axis-buttonsfalseSTATICALLY_PARTIALBI-005
content.maps, content.situations, content.vehicles, content.repaints, content.hofs, content.fleet-registration-sourcestrueSTATICALLY_VALIDATEDDiscoverAsync, /list

De planner rapporteert daarnaast capabilities per plan in SessionPlan.RequiredCapabilities en SessionPlan.UnsupportedRequestedFeatures (runtime.current-windows-x64, transaction.exact-restore, omsi.profile.OMSI23004, world.new-map, world.presented-entrypoint, world.entrypoint-identity, world.saved-situation, boot.headless-start, internet-textures.disabled, world.explicit-date, world.explicit-time, world.explicit-year, weather, player-vehicle.*, input.keyboard, input.controller, content.*).

Bekende beperkingen#

  • Handles gelden per sessie; hergebruik van adressen wordt gedetecteerd aan de hand van een objectvingerafdruk (VMT plus definitiepointer voor voertuigen, VMT plus mensindex voor mensen) en gerapporteerd als OL_E_RUNTIME_OBJECT_HANDLE_STALE. Resterende blinde vlek: een object van dezelfde klasse en met dezelfde definitie dat tussen twee lijstleesacties op hetzelfde adres opnieuw is aangemaakt, is niet van het origineel te onderscheiden.
  • Resultaten zijn begrensd tot de mailbox van 64 KiB; begrensde lijsten worden afgekapt met truncated=true; timetable.logs.read is niet begrensd en kan mislukken met OL_E_RUNTIME_RESPONSE_TOO_LARGE.
  • Geen verplaatsing van voertuigen tussen tiles, geen schrijven van stringvariabelen, geen schrijven naar de kalender, geen schrijven van het weer, geen headless toewijzing van het PlayerVehicle. Zie bekende beperkingen.