Documentation ¶
Overview ¶
Multiplayer-Bibliothek für X-Plane. Die Umsetzung basiert auf dem Code der libxplanemp Bibliothek. Weitere Informationen unter https://github.com/wadesworld2112/libxplanemp.
Für die Darstellung können vorhandene CSL-Pakete genutzt werden. Zusätzlich unterstützt diese Bibliothek auch die Darstellung von OBJ8-Objekten. Bei den OBJ8-Objekte werden auch Animationen unterstützt.
Die Bibliothek kann in einem X-Plane Plugin wie folgt genutzt werden:
Erstellung des MultiplayerManagers ¶
Schritt 1 (während der Start-Phase des Plugins) MultiplayerManager angelegen
config := NewDefaultConfiguration() mpManager, err := New(cslPath, relatedTxt, lightsPng, defaultIcao, config)
Schritt 2 (während der Enable-Phase des Plugins) MultiplayerManager aktivieren
if mpManager != nil { mpManager.Enable() }
Neue Flugzeuge und Fahrzeuge hinzufügen ¶
Flugzeuge und Fahrzeuge können über die CreatePlane-Funktion hinzugefügt werden. Dazu muss das ICAO-Kürzel des Flugzeugs und der Airline und ggf. ein Livery angegeben werden. Welches Objekt der MultiplayerManager auswählt, erfolgt nach dieser Reihenfolge:
- ICAO, Airline und Livery stimmen überein
- ICAO und Airline stimmen überein
- verwandter ICAO, Airline und Livery stimmen überein
- verwandter ICAO und Airline stimmen überein
- ICAO stimmt überein
- verwandter ICAO stimmt überein
- Standard-ICAO stimmt überein
- verwandter Standard-ICAO stimmt überein
- beliebiges Flugzeug nehmen
Beispiel zum Hinzufügen eines neuen Flugzeugs
planeId := mpManager.CreatePlane("B738", "BER", "WL", dataFunc, ref)
Index ¶
- type Configuration
- type LightStatus
- type LightsPattern
- type MultiplayerManager
- func (self *MultiplayerManager) ChangePlaneModel(id PlaneId, icao, airline, livery string)
- func (self *MultiplayerManager) CountPlanes() int
- func (self *MultiplayerManager) CreatePlane(icao, airline, livery string, dataFunc PlaneDataFunc, refData interface{}) PlaneId
- func (self *MultiplayerManager) DestroyPlane(id PlaneId)
- func (self *MultiplayerManager) DisableAircraftLabels()
- func (self *MultiplayerManager) DrawingAircraftLabels() bool
- func (self *MultiplayerManager) DumpOneCycle()
- func (self *MultiplayerManager) Enable() error
- func (self *MultiplayerManager) EnableAircraftLabels()
- func (self *MultiplayerManager) GetConfiguration() *Configuration
- func (self *MultiplayerManager) GetNthPlane(index int) (PlaneId, bool)
- func (self *MultiplayerManager) GetPlaneData(id PlaneId, dataType PlaneDataType) (int, PlaneCallbackResult, *PlanePosition, *PlaneSurfaces, *PlaneRadar)
- func (self *MultiplayerManager) GetPlaneICAOAndLivery(id PlaneId) (icao, livery string, found bool)
- func (self *MultiplayerManager) IsICAOValid(icao string) bool
- func (self *MultiplayerManager) SetDefaultPlaneICAO(defaultICAO string)
- func (self *MultiplayerManager) SetPlaneRenderer(renderer Renderer, ref interface{})
- type Plane
- type PlaneCallbackResult
- type PlaneDataFunc
- type PlaneDataType
- type PlaneId
- type PlanePosition
- type PlaneRadar
- type PlaneSurfaces
- type Renderer
- type TransponderMode
- Bugs
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Configuration ¶
type Configuration struct { FullDistance float32 //Entfernung in km bis zu der das Objekt voll gezeichnet wird, danach nur noch die Lichter Resolution int //Auflösung für OBJ7-Texturen (0[schlechteste Qualität] .. 5 [beste Qualität]) CalculationMod int //Modulo-Wert für die Abfrage der Daten (je niedriger der Wert umso öfter werden die Daten abgerufen) EnableRenderStatistics bool //Flag ob Statistiken zum DefaultRenderer als DataRef zur Verfügung gestellt werden sollen RenderAircraftLabels bool //Flag ob Labels gezeichnet werden sollen UseAnyLitTexture bool //Flag ob bei fehlender Nachttextur eine beliebige andere Nachttextur des Models genommen werden soll MergeLitTextures bool //Flag ob die Nachttexturen mit der Tagtextur gemischt werden soll (besseres Aussehen) UseObj8Lights bool //Flag ob bei OBJ7-Objekten anstatt der eigenen Lichter die neuen OBJ8 Lichter genutzt werden sollen DisableObj8LightSpills bool //Flag ob bei OBJ8-Objekten die LightSpills entfernt werden sollen (bessere Performance) }
Enthält die Einstellungen für die Multiplayer-Bibliothek
func NewDefaultConfiguration ¶
func NewDefaultConfiguration() *Configuration
Erzeugt eine neue Standardkonfiguration
FullDistance = 5.0 km Resolution = 3 CalculationMod = 50 EnableRenderStatistics = false RenderAircraftLabels = false UseAnyLitTexture = false MergeLitTextures = false UseObj8Lights = false DisableObj8LightSpills = true
type LightStatus ¶
type LightStatus struct { TimeOffset int //Offset für die Berechnung der Strobe und Beacon-Lichter LandingLights bool //Zustand der Landelichter BeaconLights bool //Zustand der Beacon-Lights StrobeLights bool //Zustand der Strobe-Lights TaxiLights bool //Zustand der Taxi-Lights FlashPattern LightsPattern //Muster für die Beacon- und Strobe-Lights }
Enthält die Informationen über die Beleuchtung
type LightsPattern ¶
type LightsPattern int
Muster für die Strobe- und Beacon-Lichter
const ( LightsPattern_Default LightsPattern = 0 // Jets: one strobe flash, short beacon (-*---*---*---) LightsPattern_EADS LightsPattern = 1 // Airbus+EADS: strobe flashes twice (-*-*-----*-*--), short beacon LightsPattern_GA LightsPattern = 2 // GA: one strobe flash, long beacon (-*--------*---) )
type MultiplayerManager ¶
type MultiplayerManager struct {
// contains filtered or unexported fields
}
Schnittstelle zur Multiplayer-Bibliothek
func New ¶
func New(cslFolder, relatedFile, lightsFile, defaultICAO string, config *Configuration) (*MultiplayerManager, error)
Erzeugt einen neuen MultiplayerManager
func (*MultiplayerManager) ChangePlaneModel ¶
func (self *MultiplayerManager) ChangePlaneModel(id PlaneId, icao, airline, livery string)
Ändert für ein Flugzeug das Aussehen. Dabei kommen die gleichen Regeln wie bei CreatePlane zum Einsatz.
func (*MultiplayerManager) CountPlanes ¶
func (self *MultiplayerManager) CountPlanes() int
Liefert die Anzahl der aktuell verwalteten Flugzeuge zurück
func (*MultiplayerManager) CreatePlane ¶
func (self *MultiplayerManager) CreatePlane(icao, airline, livery string, dataFunc PlaneDataFunc, refData interface{}) PlaneId
Fügt ein neues Flugzeug dem Manager hinzu. Dazu wird versucht entsprechend der Angaben das genaue Flugzeug zu finden. Die Datenbereitstellung erfolgt über die PlaneDataFunc. Die zusätzlichen refData werden an die PlaneDataFunc übergeben.
func (*MultiplayerManager) DestroyPlane ¶
func (self *MultiplayerManager) DestroyPlane(id PlaneId)
Entfernt das übergebene Flugzeug aus der Überwachung des MultiplayerManagers. Nach diesem Aufruf wird das Flugzeug nicht mehr gezeichnet.
func (*MultiplayerManager) DisableAircraftLabels ¶
func (self *MultiplayerManager) DisableAircraftLabels()
Deaktiviert das Zeichnen der Flugzeugbeschriftungen.
func (*MultiplayerManager) DrawingAircraftLabels ¶
func (self *MultiplayerManager) DrawingAircraftLabels() bool
Gibt an, ob die Flugzeugbeschriftungen gezeichnet werden.
func (*MultiplayerManager) DumpOneCycle ¶
func (self *MultiplayerManager) DumpOneCycle()
Dumpt alle Informationen eines Zykluses in die Log-Datei von X-Plane.
func (*MultiplayerManager) Enable ¶
func (self *MultiplayerManager) Enable() error
Aktiviert den MultiplayerManager. Erst nach diesem Aufruf können neue Objekte erzeugt werden.
func (*MultiplayerManager) EnableAircraftLabels ¶
func (self *MultiplayerManager) EnableAircraftLabels()
Aktiviert das Zeichnen der Flugzeugbeschriftungen.
func (*MultiplayerManager) GetConfiguration ¶
func (self *MultiplayerManager) GetConfiguration() *Configuration
Liefert die aktuelle Konfiguration
func (*MultiplayerManager) GetNthPlane ¶
func (self *MultiplayerManager) GetNthPlane(index int) (PlaneId, bool)
Liefert die ID des übergebenes Index zurück. Der boolsche Wert zeigt an, ob der Index gefunden wurde oder nicht.
func (*MultiplayerManager) GetPlaneData ¶
func (self *MultiplayerManager) GetPlaneData(id PlaneId, dataType PlaneDataType) (int, PlaneCallbackResult, *PlanePosition, *PlaneSurfaces, *PlaneRadar)
Liefert die aktuellen Daten entsprechend des Übergebenen Datentyp für das gewünschte Flugzeug zurück. Alle anderen Zeiger sind nil. Zusätzlich liefert die Methode das Alter der Daten und den Rückgabewert des Callback-Moduls zurück
func (*MultiplayerManager) GetPlaneICAOAndLivery ¶
func (self *MultiplayerManager) GetPlaneICAOAndLivery(id PlaneId) (icao, livery string, found bool)
Liefert das ICAO-Kürzel und das Livery für das übergebene Flugzeug zurück. Der boolsche Wert zeigt an, ob die ID gültig war.
func (*MultiplayerManager) IsICAOValid ¶
func (self *MultiplayerManager) IsICAOValid(icao string) bool
Überprüft ob der übergebene ICAO-Wert gültig ist, d.h. ob es Flugzeuge in den CSL-Paketen mit diesem ICAO gibt
func (*MultiplayerManager) SetDefaultPlaneICAO ¶
func (self *MultiplayerManager) SetDefaultPlaneICAO(defaultICAO string)
Ändert das Standard-ICAO-Kürzel für die Ermittlung des Flugzeugs, wenn das gewünschte ICAO nicht registriert ist.
func (*MultiplayerManager) SetPlaneRenderer ¶
func (self *MultiplayerManager) SetPlaneRenderer(renderer Renderer, ref interface{})
Setzt die Renderer-Implementierung die genutzt werden soll. Soll der Standardrenderer genutzt werden, dann sieht der Aufruf wie folgt aus:
mpManager.SetPlaneRenderer(renderer.NewDefaultRenderer(config), nil)
type Plane ¶
type Plane struct { PlaneId PlaneId CslAircraft *csl.CslAircraft //zugeordnete CSl-Definition TextureNum int32 //Nummer der Textur für den Tag LitTextureNum int32 //Nummer der Textur für die Nacht PositionData *PlanePosition //aktuelle Positionsdaten SurfacesData *PlaneSurfaces //aktuelle Steuerungsdaten RadarData *PlaneRadar //aktuelle Radardaten RenderFull bool //Flag ob das Flugzeug voll oder nur die Lichter gezeichnet werden sollen // contains filtered or unexported fields }
Enthält die notwendigen Daten für die Verwaltung eines Flugzeugs BUG(abieberbach) Unterstützung für ACF-Flugzeuge wurde entfernt
func (*Plane) UpdateData ¶
func (self *Plane) UpdateData(now int, dataType PlaneDataType) PlaneCallbackResult
type PlaneCallbackResult ¶
type PlaneCallbackResult int
Ergebnis des Callback Aufrufs
const ( Data_Unchanged PlaneCallbackResult = 1 // Information hat sich seit dem letzten Aufruf nicht geändert Data_NewData PlaneCallbackResult = 2 // Informationen haben sich seit dem letzten Aufruf geändert )
type PlaneDataFunc ¶
type PlaneDataFunc func(id PlaneId, dataType PlaneDataType, ref interface{}) (PlaneCallbackResult, *PlanePosition, *PlaneSurfaces, *PlaneRadar)
Callback-Funktion zur Ermittlung der gewünschten Daten. Alle nicht abgefragten Daten haben als Ergebnis "nil".
type PlaneDataType ¶
type PlaneDataType int
Art der abgefragten Daten
const ( DataType_Position PlaneDataType = 0 //Positionsdaten des Objekts DataType_Surfaces PlaneDataType = 1 //Steuerinformationen des Objekts DataType_Radar PlaneDataType = 2 //Radarinformationen des Objekts )
type PlanePosition ¶
type PlanePosition struct { Lat float64 //Breitengrad Lon float64 //Längengrad Elevation float64 //Höhe MSL (in Fuss) Pitch float32 //aktueller Pitch-Winkel Roll float32 //aktueller Roll-Winkel Heading float32 //aktueller Heading-Winkel Label string //Bezeichnung }
Positionsdaten des Objektes
type PlaneRadar ¶
type PlaneRadar struct { Code int Mode TransponderMode }
Enthält die Radar-Informationen
type PlaneSurfaces ¶
type PlaneSurfaces struct { GearPosition float32 //Position des Fahrwerks [0 (eingefahren) .. 1 (ausgefahren)] FlapRatio float32 //Position der Flaps [0 (eingefahren) .. 1 (ausgefahren)] SpoilerRatio float32 //Position der Spoiler [0 (eingefahren) .. 1 (ausgefahren)] SpeedBrakeRatio float32 //Position der Speedbrakes [0 (eingefahren) .. 1 (ausgefahren)] SlatRatio float32 //Position des Slats [0 (eingefahren) .. 1 (ausgefahren)] WingSweep float32 //Position der Flügel Thrust float32 //aktueller Schub [-1 (voller Umkehrschub) .. [0] (kein Schub) .. 1 (voller Schub)] YokePitch float32 //aktuller Pitch-Winkel des Yoke YokeHeading float32 //aktuller Heading-Winkel des Yoke YokeRoll float32 //aktuller Roll-Winkel des Yoke Lights LightStatus //aktueller Zustand der Lichter }
Enthält die Daten für die Steuerflächen
type Renderer ¶
type Renderer interface { //Initialisiert den Renderer. Init() //Zeichnet alle übergebenen Flugzeuge. Render(isBlend, renderAircraftLabels bool, aircrafts []*Plane, ref interface{}) }
Schnittstelle für eine eigene Renderer-Implementierung
type TransponderMode ¶
type TransponderMode int
Transponder Modus
const ( TransponderMode_Standby TransponderMode = 0 //Modus: Standby TransponderMode_Mode3A TransponderMode = 1 //Modus: 3a TransponderMode_ModeC TransponderMode = 2 //Modus: C TransponderMode_ModeC_Low TransponderMode = 3 //Modus: C Low TransponderMode_ModeC_Ident TransponderMode = 4 //Modus: C Ident )
Notes ¶
Bugs ¶
Unterstützung für ACF-Flugzeuge wurde entfernt
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Enthält zusätzliche Funktionalitäten, die in der libxplanemp-Bibliothek nicht verfügbar sind.
|
Enthält zusätzliche Funktionalitäten, die in der libxplanemp-Bibliothek nicht verfügbar sind. |
OpenGL-Bindings für das Zeichnen der Objekte
|
OpenGL-Bindings für das Zeichnen der Objekte |
OpenGL GLU-Bindings für das Zeichnen der Objekte
|
OpenGL GLU-Bindings für das Zeichnen der Objekte |
internal
|
|
Enthält die Standardimplementierung für das Zeichnen der Objekte
|
Enthält die Standardimplementierung für das Zeichnen der Objekte |