Update XPLM for ARM64
This commit is contained in:
1 parent
40067a606d
commit
174c20bd8f
59 files changed
+12475
-9196
No files matched your search
+250
-235
@@ -1,67 +1,63 @@
|
||||
{
|
||||
Copyright 2005-2012 Sandy Barbour and Ben Supnik
|
||||
|
||||
All rights reserved. See license.txt for usage.
|
||||
|
||||
X-Plane SDK Version: 2.1.1
|
||||
Copyright 2005-2012 Sandy Barbour and Ben Supnik All rights reserved. See
|
||||
license.txt for usage. X-Plane SDK Version: 2.1.1
|
||||
}
|
||||
|
||||
UNIT XPLMScenery;
|
||||
INTERFACE
|
||||
{
|
||||
This package contains APIs to interact with X-Plane's scenery system.
|
||||
This package contains APIs to interact with X-Plane's scenery system.
|
||||
}
|
||||
|
||||
USES XPLMDefs;
|
||||
USES
|
||||
XPLMDefs;
|
||||
{$A4}
|
||||
{$IFDEF MSWINDOWS}
|
||||
{$DEFINE DELPHI}
|
||||
{$ENDIF}
|
||||
{$IFDEF XPLM200}
|
||||
{___________________________________________________________________________
|
||||
* Terrain Y-Testing
|
||||
___________________________________________________________________________}
|
||||
{
|
||||
The Y-testing API allows you to locate the physical scenery mesh. This
|
||||
would be used to place dynamic graphics on top of the ground in a
|
||||
plausible way or do physics interactions.
|
||||
The Y-testing API allows you to locate the physical scenery mesh. This
|
||||
would be used to place dynamic graphics on top of the ground in a plausible
|
||||
way or do physics interactions.
|
||||
|
||||
The Y-test API works via probe objects, which are allocated by your plugin
|
||||
and used to query terrain. Probe objects exist both to capture which
|
||||
algorithm you have requested (see probe types) and also to cache query
|
||||
information.
|
||||
The Y-test API works via probe objects, which are allocated by your plugin
|
||||
and used to query terrain. Probe objects exist both to capture which
|
||||
algorithm you have requested (see probe types) and also to cache query
|
||||
information.
|
||||
|
||||
Performance guidelines: It is generally faster to use the same probe for
|
||||
nearby points and different probes for different points. Try not to
|
||||
allocate more than "hundreds" of probes at most. Share probes if you need
|
||||
more. Generally, probing operations are expensive, and should be avoided
|
||||
via caching when possible.
|
||||
Performance Guidelines
|
||||
----------------------
|
||||
|
||||
Y testing returns a location on the terrain, a normal vectory, and a
|
||||
velocity vector. The normal vector tells you the slope of the terrain at
|
||||
that point. The velocity vector tells you if that terrain is moving (and
|
||||
is in meters/second). For example, if your Y test hits the aircraft carrier
|
||||
deck, this tells you the velocity of that point on the deck.
|
||||
It is generally faster to use the same probe for nearby points and
|
||||
different probes for different points. Try not to allocate more than
|
||||
"hundreds" of probes at most. Share probes if you need more. Generally,
|
||||
probing operations are expensive, and should be avoided via caching when
|
||||
possible.
|
||||
|
||||
Note: the Y-testing API is limited to probing the loaded scenery area,
|
||||
which is approximately 300x300 km in X-Plane 9. Probes outside this area
|
||||
will return the height of a 0 MSL sphere.
|
||||
Y testing returns a location on the terrain, a normal vectory, and a
|
||||
velocity vector. The normal vector tells you the slope of the terrain at
|
||||
that point. The velocity vector tells you if that terrain is moving (and is
|
||||
in meters/second). For example, if your Y test hits the aircraft carrier
|
||||
deck, this tells you the velocity of that point on the deck.
|
||||
|
||||
Note: the Y-testing API is limited to probing the loaded scenery area,
|
||||
which is approximately 300x300 km in X-Plane 9. Probes outside this area
|
||||
will return the height of a 0 MSL sphere.
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
{
|
||||
XPLMProbeType
|
||||
|
||||
XPLMProbeType defines the type of terrain probe - each probe has a
|
||||
different algorithm. (Only one type of probe is provided right now, but
|
||||
future APIs will expose more flexible or poewrful or useful probes.
|
||||
XPLMProbeType defines the type of terrain probe - each probe has a
|
||||
different algorithm. (Only one type of probe is provided right now, but
|
||||
future APIs will expose more flexible or poewrful or useful probes.
|
||||
}
|
||||
TYPE
|
||||
XPLMProbeType = (
|
||||
{ The Y probe gives you the location of the tallest physical scenery along }
|
||||
{ the Y axis going through the queried point. }
|
||||
{ The Y probe gives you the location of the tallest physical scenery along }
|
||||
{ the Y axis going through the queried point. }
|
||||
xplm_ProbeY = 0
|
||||
|
||||
);
|
||||
@@ -70,18 +66,18 @@ TYPE
|
||||
{
|
||||
XPLMProbeResult
|
||||
|
||||
Probe results - possible results from a probe query.
|
||||
Probe results - possible results from a probe query.
|
||||
}
|
||||
XPLMProbeResult = (
|
||||
{ The probe hit terrain and returned valid values. }
|
||||
{ The probe hit terrain and returned valid values. }
|
||||
xplm_ProbeHitTerrain = 0
|
||||
|
||||
{ An error in the API call. Either the probe struct size is bad, or the }
|
||||
{ probe is invalid or the type is mismatched for the specific query call. }
|
||||
{ An error in the API call. Either the probe struct size is bad, or the }
|
||||
{ probe is invalid or the type is mismatched for the specific query call. }
|
||||
,xplm_ProbeError = 1
|
||||
|
||||
{ The probe call succeeded but there is no terrain under this point (perhaps }
|
||||
{ it is off the side of the planet?) }
|
||||
{ The probe call succeeded but there is no terrain under this point (perhaps }
|
||||
{ it is off the side of the planet?) }
|
||||
,xplm_ProbeMissed = 2
|
||||
|
||||
);
|
||||
@@ -90,8 +86,8 @@ TYPE
|
||||
{
|
||||
XPLMProbeRef
|
||||
|
||||
An XPLMProbeRef is an opaque handle to a probe, used for querying the
|
||||
terrain.
|
||||
An XPLMProbeRef is an opaque handle to a probe, used for querying the
|
||||
terrain.
|
||||
}
|
||||
XPLMProbeRef = pointer;
|
||||
PXPLMProbeRef = ^XPLMProbeRef;
|
||||
@@ -99,321 +95,340 @@ TYPE
|
||||
{
|
||||
XPLMProbeInfo_t
|
||||
|
||||
XPLMProbeInfo_t contains the results of a probe call. Make sure to set
|
||||
structSize to the size of the struct before using it.
|
||||
XPLMProbeInfo_t contains the results of a probe call. Make sure to set
|
||||
structSize to the size of the struct before using it.
|
||||
}
|
||||
XPLMProbeInfo_t = RECORD
|
||||
{ Size of structure in bytes - always set this before calling the XPLM. }
|
||||
structSize : integer;
|
||||
{ Resulting X location of the terrain point we hit, in local OpenGL }
|
||||
{ coordinates. }
|
||||
locationX : single;
|
||||
{ Resulting Y location of the terrain point we hit, in local OpenGL }
|
||||
{ coordinates. }
|
||||
locationY : single;
|
||||
{ Resulting Z location of the terrain point we hit, in local OpenGL }
|
||||
{ coordinates. }
|
||||
locationZ : single;
|
||||
{ X component of the normal vector to the terrain we found. }
|
||||
normalX : single;
|
||||
{ Y component of the normal vector to the terrain we found. }
|
||||
normalY : single;
|
||||
{ Z component of the normal vector to the terrain we found. }
|
||||
normalZ : single;
|
||||
{ X component of the velocity vector of the terrain we found. }
|
||||
velocityX : single;
|
||||
{ Y component of the velocity vector of the terrain we found. }
|
||||
velocityY : single;
|
||||
{ Z component of the velocity vector of the terrain we found. }
|
||||
velocityZ : single;
|
||||
{ Tells if the surface we hit is water (otherwise it is land). }
|
||||
is_wet : integer;
|
||||
{ Size of structure in bytes - always set this before calling the XPLM. }
|
||||
structSize : Integer;
|
||||
{ Resulting X location of the terrain point we hit, in local OpenGL }
|
||||
{ coordinates. }
|
||||
locationX : Single;
|
||||
{ Resulting Y location of the terrain point we hit, in local OpenGL }
|
||||
{ coordinates. }
|
||||
locationY : Single;
|
||||
{ Resulting Z location of the terrain point we hit, in local OpenGL }
|
||||
{ coordinates. }
|
||||
locationZ : Single;
|
||||
{ X component of the normal vector to the terrain we found. }
|
||||
normalX : Single;
|
||||
{ Y component of the normal vector to the terrain we found. }
|
||||
normalY : Single;
|
||||
{ Z component of the normal vector to the terrain we found. }
|
||||
normalZ : Single;
|
||||
{ X component of the velocity vector of the terrain we found. }
|
||||
velocityX : Single;
|
||||
{ Y component of the velocity vector of the terrain we found. }
|
||||
velocityY : Single;
|
||||
{ Z component of the velocity vector of the terrain we found. }
|
||||
velocityZ : Single;
|
||||
{ Tells if the surface we hit is water (otherwise it is land). }
|
||||
is_wet : Integer;
|
||||
END;
|
||||
PXPLMProbeInfo_t = ^XPLMProbeInfo_t;
|
||||
|
||||
{
|
||||
XPLMCreateProbe
|
||||
|
||||
Creates a new probe object of a given type and returns.
|
||||
Creates a new probe object of a given type and returns.
|
||||
}
|
||||
FUNCTION XPLMCreateProbe(
|
||||
inProbeType : XPLMProbeType) : XPLMProbeRef;
|
||||
{$IFDEF DELPHI}
|
||||
cdecl; external 'XPLM.DLL';
|
||||
{$ELSE}
|
||||
cdecl; external '';
|
||||
{$ENDIF}
|
||||
cdecl; external XPLM_DLL;
|
||||
|
||||
{
|
||||
XPLMDestroyProbe
|
||||
|
||||
Deallocates an existing probe object.
|
||||
Deallocates an existing probe object.
|
||||
}
|
||||
PROCEDURE XPLMDestroyProbe(
|
||||
inProbe : XPLMProbeRef);
|
||||
{$IFDEF DELPHI}
|
||||
cdecl; external 'XPLM.DLL';
|
||||
{$ELSE}
|
||||
cdecl; external '';
|
||||
{$ENDIF}
|
||||
cdecl; external XPLM_DLL;
|
||||
|
||||
{
|
||||
XPLMProbeTerrainXYZ
|
||||
|
||||
Probes the terrain. Pass in the XYZ coordinate of the probe point, a probe
|
||||
object, and an XPLMProbeInfo_t struct that has its structSize member set
|
||||
properly. Other fields are filled in if we hit terrain, and a probe result
|
||||
is returned.
|
||||
Probes the terrain. Pass in the XYZ coordinate of the probe point, a probe
|
||||
object, and an XPLMProbeInfo_t struct that has its structSize member set
|
||||
properly. Other fields are filled in if we hit terrain, and a probe result
|
||||
is returned.
|
||||
}
|
||||
FUNCTION XPLMProbeTerrainXYZ(
|
||||
inProbe : XPLMProbeRef;
|
||||
inX : single;
|
||||
inY : single;
|
||||
inZ : single;
|
||||
inX : Single;
|
||||
inY : Single;
|
||||
inZ : Single;
|
||||
outInfo : PXPLMProbeInfo_t) : XPLMProbeResult;
|
||||
{$IFDEF DELPHI}
|
||||
cdecl; external 'XPLM.DLL';
|
||||
{$ELSE}
|
||||
cdecl; external '';
|
||||
{$ENDIF}
|
||||
cdecl; external XPLM_DLL;
|
||||
|
||||
{$ENDIF}
|
||||
{$ENDIF XPLM200}
|
||||
{$IFDEF XPLM300}
|
||||
{___________________________________________________________________________
|
||||
* Magnetic Variation
|
||||
___________________________________________________________________________}
|
||||
{
|
||||
Use the magnetic variation (more properly, the "magnetic declination") API
|
||||
to find the offset of magnetic north from true north at a given latitude
|
||||
and longitude within the simulator.
|
||||
|
||||
In the real world, the Earth's magnetic field is irregular, such that true
|
||||
north (the direction along a meridian toward the north pole) does not
|
||||
necessarily match what a magnetic compass shows as north.
|
||||
|
||||
Using this API ensures that you present the same offsets to users as
|
||||
X-Plane's built-in instruments.
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
XPLMGetMagneticVariation
|
||||
|
||||
Returns X-Plane's simulated magnetic variation (declination) at the
|
||||
indication latitude and longitude.
|
||||
}
|
||||
FUNCTION XPLMGetMagneticVariation(
|
||||
latitude : Real;
|
||||
longitude : Real) : Single;
|
||||
cdecl; external XPLM_DLL;
|
||||
|
||||
{
|
||||
XPLMDegTrueToDegMagnetic
|
||||
|
||||
Converts a heading in degrees relative to true north into a value relative
|
||||
to magnetic north at the user's current location.
|
||||
}
|
||||
FUNCTION XPLMDegTrueToDegMagnetic(
|
||||
headingDegreesTrue : Single) : Single;
|
||||
cdecl; external XPLM_DLL;
|
||||
|
||||
{
|
||||
XPLMDegMagneticToDegTrue
|
||||
|
||||
Converts a heading in degrees relative to magnetic north at the user's
|
||||
current location into a value relative to true north.
|
||||
}
|
||||
FUNCTION XPLMDegMagneticToDegTrue(
|
||||
headingDegreesMagnetic: Single) : Single;
|
||||
cdecl; external XPLM_DLL;
|
||||
|
||||
{$ENDIF XPLM300}
|
||||
{___________________________________________________________________________
|
||||
* Object Drawing
|
||||
___________________________________________________________________________}
|
||||
{
|
||||
The object drawing routines let you load and draw X-Plane OBJ files.
|
||||
Objects are loaded by file path and managed via an opaque handle. X-Plane
|
||||
naturally reference counts objects, so it is important that you balance
|
||||
every successful call to XPLMLoadObject with a call to XPLMUnloadObject!
|
||||
The object drawing routines let you load and draw X-Plane OBJ files.
|
||||
Objects are loaded by file path and managed via an opaque handle. X-Plane
|
||||
naturally reference counts objects, so it is important that you balance
|
||||
every successful call to XPLMLoadObject with a call to XPLMUnloadObject!
|
||||
}
|
||||
|
||||
|
||||
|
||||
{$IFDEF XPLM200}
|
||||
TYPE
|
||||
{
|
||||
XPLMObjectRef
|
||||
|
||||
An XPLMObjectRef is a opaque handle to an .obj file that has been loaded
|
||||
into memory.
|
||||
An XPLMObjectRef is a opaque handle to an .obj file that has been loaded
|
||||
into memory.
|
||||
}
|
||||
XPLMObjectRef = pointer;
|
||||
PXPLMObjectRef = ^XPLMObjectRef;
|
||||
{$ENDIF}
|
||||
{$ENDIF XPLM200}
|
||||
|
||||
{$IFDEF XPLM200}
|
||||
{
|
||||
XPLMDrawInfo_t
|
||||
|
||||
The XPLMDrawInfo_t structure contains positioning info for one object that
|
||||
is to be drawn. Be sure to set structSize to the size of the structure for
|
||||
future expansion.
|
||||
The XPLMDrawInfo_t structure contains positioning info for one object that
|
||||
is to be drawn. Be sure to set structSize to the size of the structure for
|
||||
future expansion.
|
||||
}
|
||||
XPLMDrawInfo_t = RECORD
|
||||
{ Set this to the size of this structure! }
|
||||
structSize : integer;
|
||||
{ X location of the object in local coordinates. }
|
||||
x : single;
|
||||
{ Y location of the object in local coordinates. }
|
||||
y : single;
|
||||
{ Z location of the object in local coordinates. }
|
||||
z : single;
|
||||
{ Pitch in degres to rotate the object, positive is up. }
|
||||
pitch : single;
|
||||
{ Heading in local coordinates to rotate the object, clockwise. }
|
||||
heading : single;
|
||||
{ Roll to rotate the object. }
|
||||
roll : single;
|
||||
{ Set this to the size of this structure! }
|
||||
structSize : Integer;
|
||||
{ X location of the object in local coordinates. }
|
||||
x : Single;
|
||||
{ Y location of the object in local coordinates. }
|
||||
y : Single;
|
||||
{ Z location of the object in local coordinates. }
|
||||
z : Single;
|
||||
{ Pitch in degres to rotate the object, positive is up. }
|
||||
pitch : Single;
|
||||
{ Heading in local coordinates to rotate the object, clockwise. }
|
||||
heading : Single;
|
||||
{ Roll to rotate the object. }
|
||||
roll : Single;
|
||||
END;
|
||||
PXPLMDrawInfo_t = ^XPLMDrawInfo_t;
|
||||
{$ENDIF}
|
||||
{$ENDIF XPLM200}
|
||||
|
||||
{$IFDEF XPLM210}
|
||||
{
|
||||
XPLMObjectLoaded_f
|
||||
|
||||
You provide this callback when loading an object asynchronously; it will be
|
||||
called once the object is loaded. Your refcon is passed back. The object
|
||||
ref passed in is the newly loaded object (ready for use) or NULL if an
|
||||
error occured.
|
||||
You provide this callback when loading an object asynchronously; it will be
|
||||
called once the object is loaded. Your refcon is passed back. The object
|
||||
ref passed in is the newly loaded object (ready for use) or NULL if an
|
||||
error occured.
|
||||
|
||||
If your plugin is disabled, this callback will be delivered as soon as the
|
||||
plugin is re-enabled. If your plugin is unloaded before this callback is
|
||||
ever called, the SDK will release the object handle for you.
|
||||
If your plugin is disabled, this callback will be delivered as soon as the
|
||||
plugin is re-enabled. If your plugin is unloaded before this callback is
|
||||
ever called, the SDK will release the object handle for you.
|
||||
}
|
||||
TYPE
|
||||
XPLMObjectLoaded_f = PROCEDURE(
|
||||
inObject : XPLMObjectRef;
|
||||
inRefcon : pointer); cdecl;
|
||||
{$ENDIF}
|
||||
{$ENDIF XPLM210}
|
||||
|
||||
{$IFDEF XPLM200}
|
||||
{
|
||||
XPLMLoadObject
|
||||
|
||||
This routine loads an OBJ file and returns a handle to it. If X-plane has
|
||||
already loaded the object, the handle to the existing object is returned.
|
||||
Do not assume you will get the same handle back twice, but do make sure to
|
||||
call unload once for every load to avoid "leaking" objects. The object
|
||||
will be purged from memory when no plugins and no scenery are using it.
|
||||
This routine loads an OBJ file and returns a handle to it. If X-Plane has
|
||||
already loaded the object, the handle to the existing object is returned.
|
||||
Do not assume you will get the same handle back twice, but do make sure to
|
||||
call unload once for every load to avoid "leaking" objects. The object will
|
||||
be purged from memory when no plugins and no scenery are using it.
|
||||
|
||||
The path for the object must be relative to the X-System base folder. If
|
||||
the path is in the root of the X-System folder you may need to prepend ./
|
||||
to it; loading objects in the root of the X-System folder is STRONGLY
|
||||
discouraged - your plugin should not dump art resources in the root folder!
|
||||
The path for the object must be relative to the X-System base folder. If
|
||||
the path is in the root of the X-System folder you may need to prepend ./
|
||||
to it; loading objects in the root of the X-System folder is STRONGLY
|
||||
discouraged - your plugin should not dump art resources in the root folder!
|
||||
|
||||
XPLMLoadObject will return NULL if the object cannot be loaded (either
|
||||
because it is not found or the file is misformatted). This routine will
|
||||
load any object that can be used in the X-Plane scenery system.
|
||||
|
||||
XPLMLoadObject will return NULL if the object cannot be loaded (either
|
||||
because it is not found or the file is misformatted). This routine will
|
||||
load any object that can be used in the X-Plane scenery system.
|
||||
|
||||
It is important that the datarefs an object uses for animation already be
|
||||
loaded before you load the object. For this reason it may be necessary to
|
||||
defer object loading until the sim has fully started.
|
||||
It is important that the datarefs an object uses for animation already be
|
||||
loaded before you load the object. For this reason it may be necessary to
|
||||
defer object loading until the sim has fully started.
|
||||
}
|
||||
FUNCTION XPLMLoadObject(
|
||||
inPath : Pchar) : XPLMObjectRef;
|
||||
{$IFDEF DELPHI}
|
||||
cdecl; external 'XPLM.DLL';
|
||||
{$ELSE}
|
||||
cdecl; external '';
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
inPath : XPLMString) : XPLMObjectRef;
|
||||
cdecl; external XPLM_DLL;
|
||||
{$ENDIF XPLM200}
|
||||
|
||||
{$IFDEF XPLM210}
|
||||
{
|
||||
XPLMLoadObjectAsync
|
||||
|
||||
This routine loads an object asynchronously; control is returned to you
|
||||
immediately while X-Plane loads the object. The sim will not stop flying
|
||||
while the object loads. For large objects, it may be several seconds
|
||||
before the load finishes.
|
||||
This routine loads an object asynchronously; control is returned to you
|
||||
immediately while X-Plane loads the object. The sim will not stop flying
|
||||
while the object loads. For large objects, it may be several seconds before
|
||||
the load finishes.
|
||||
|
||||
You provide a callback function that is called once the load has completed.
|
||||
Note that if the object cannot be loaded, you will not find out until the
|
||||
callback function is called with a NULL object handle.
|
||||
You provide a callback function that is called once the load has completed.
|
||||
Note that if the object cannot be loaded, you will not find out until the
|
||||
callback function is called with a NULL object handle.
|
||||
|
||||
There is no way to cancel an asynchronous object load; you must wait for
|
||||
the load to complete and then release the object if it is no longer
|
||||
desired.
|
||||
There is no way to cancel an asynchronous object load; you must wait for
|
||||
the load to complete and then release the object if it is no longer
|
||||
desired.
|
||||
}
|
||||
PROCEDURE XPLMLoadObjectAsync(
|
||||
inPath : Pchar;
|
||||
inPath : XPLMString;
|
||||
inCallback : XPLMObjectLoaded_f;
|
||||
inRefcon : pointer);
|
||||
{$IFDEF DELPHI}
|
||||
cdecl; external 'XPLM.DLL';
|
||||
{$ELSE}
|
||||
cdecl; external '';
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
cdecl; external XPLM_DLL;
|
||||
{$ENDIF XPLM210}
|
||||
|
||||
{$IFDEF XPLM200}
|
||||
{$IFDEF XPLM_DEPRECATED}
|
||||
{
|
||||
XPLMDrawObjects
|
||||
|
||||
XPLMDrawObjects draws an object from an OBJ file one or more times. You
|
||||
pass in the object and an array of XPLMDrawInfo_t structs, one for each
|
||||
place you would like the object to be drawn.
|
||||
__Deprecation Warning__: use XPLMInstancing to draw 3-d objects by creating
|
||||
instances, rather than these APIs from draw callbacks.
|
||||
|
||||
X-Plane will attempt to cull the objects based on LOD and visibility, and
|
||||
will pick the appropriate LOD.
|
||||
XPLMDrawObjects draws an object from an OBJ file one or more times. You
|
||||
pass in the object and an array of XPLMDrawInfo_t structs, one for each
|
||||
place you would like the object to be drawn.
|
||||
|
||||
Lighting is a boolean; pass 1 to show the night version of object with
|
||||
night-only lights lit up. Pass 0 to show the daytime version of the
|
||||
object.
|
||||
X-Plane will attempt to cull the objects based on LOD and visibility, and
|
||||
will pick the appropriate LOD.
|
||||
|
||||
earth_relative controls the coordinate system. If this is 1, the rotations
|
||||
you specify are applied to the object after its coordinate system is
|
||||
transformed from local to earth-relative coordinates -- that is, an object
|
||||
with no rotations will point toward true north and the Y axis will be up
|
||||
against gravity. If this is 0, the object is drawn with your rotations
|
||||
from local coordanates -- that is, an object with no rotations is drawn
|
||||
pointing down the -Z axis and the Y axis of the object matches the local
|
||||
coordinate Y axis.
|
||||
Lighting is a boolean; pass 1 to show the night version of object with
|
||||
night-only lights lit up. Pass 0 to show the daytime version of the object.
|
||||
|
||||
earth_relative controls the coordinate system. If this is 1, the rotations
|
||||
you specify are applied to the object after its coordinate system is
|
||||
transformed from local to earth-relative coordinates -- that is, an object
|
||||
with no rotations will point toward true north and the Y axis will be up
|
||||
against gravity. If this is 0, the object is drawn with your rotations from
|
||||
local coordanates -- that is, an object with no rotations is drawn pointing
|
||||
down the -Z axis and the Y axis of the object matches the local coordinate
|
||||
Y axis.
|
||||
}
|
||||
PROCEDURE XPLMDrawObjects(
|
||||
inObject : XPLMObjectRef;
|
||||
inCount : integer;
|
||||
inCount : Integer;
|
||||
inLocations : PXPLMDrawInfo_t;
|
||||
lighting : integer;
|
||||
earth_relative : integer);
|
||||
{$IFDEF DELPHI}
|
||||
cdecl; external 'XPLM.DLL';
|
||||
{$ELSE}
|
||||
cdecl; external '';
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
lighting : Integer;
|
||||
earth_relative : Integer);
|
||||
cdecl; external XPLM_DLL;
|
||||
{$ENDIF XPLM_DEPRECATED}
|
||||
|
||||
{$IFDEF XPLM200}
|
||||
{
|
||||
XPLMUnloadObject
|
||||
|
||||
This routine marks an object as no longer being used by your plugin.
|
||||
Objects are reference counted: once no plugins are using an object, it is
|
||||
purged from memory. Make sure to call XPLMUnloadObject once for each
|
||||
successful call to XPLMLoadObject.
|
||||
This routine marks an object as no longer being used by your plugin.
|
||||
Objects are reference counted: once no plugins are using an object, it is
|
||||
purged from memory. Make sure to call XPLMUnloadObject once for each
|
||||
successful call to XPLMLoadObject.
|
||||
}
|
||||
PROCEDURE XPLMUnloadObject(
|
||||
inObject : XPLMObjectRef);
|
||||
{$IFDEF DELPHI}
|
||||
cdecl; external 'XPLM.DLL';
|
||||
{$ELSE}
|
||||
cdecl; external '';
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
cdecl; external XPLM_DLL;
|
||||
{$ENDIF XPLM200}
|
||||
|
||||
{$IFDEF XPLM200}
|
||||
{___________________________________________________________________________
|
||||
* Library Access
|
||||
___________________________________________________________________________}
|
||||
{
|
||||
The library access routines allow you to locate scenery objects via the
|
||||
X-Plane library system. Right now library access is only provided for
|
||||
objects, allowing plugin-drawn objects to be extended using the library
|
||||
system.
|
||||
The library access routines allow you to locate scenery objects via the
|
||||
X-Plane library system. Right now library access is only provided for
|
||||
objects, allowing plugin-drawn objects to be extended using the library
|
||||
system.
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
{
|
||||
XPLMLibraryEnumerator_f
|
||||
|
||||
An XPLMLibraryEnumerator_f is a callback you provide that is called once
|
||||
for each library element that is located. The returned paths will be
|
||||
relative to the X-System folder.
|
||||
An XPLMLibraryEnumerator_f is a callback you provide that is called once
|
||||
for each library element that is located. The returned paths will be
|
||||
relative to the X-System folder.
|
||||
}
|
||||
TYPE
|
||||
XPLMLibraryEnumerator_f = PROCEDURE(
|
||||
inFilePath : Pchar;
|
||||
inFilePath : XPLMString;
|
||||
inRef : pointer); cdecl;
|
||||
|
||||
{
|
||||
XPLMLookupObjects
|
||||
|
||||
This routine looks up a virtual path in the library system and returns all
|
||||
matching elements. You provide a callback - one virtual path may match
|
||||
many objects in the library. XPLMLookupObjects returns the number of
|
||||
objects found.
|
||||
This routine looks up a virtual path in the library system and returns all
|
||||
matching elements. You provide a callback - one virtual path may match many
|
||||
objects in the library. XPLMLookupObjects returns the number of objects
|
||||
found.
|
||||
|
||||
The latitude and longitude parameters specify the location the object will
|
||||
be used. The library system allows for scenery packages to only provide
|
||||
objects to certain local locations. Only objects that are allowed at the
|
||||
latitude/longitude you provide will be returned.
|
||||
The latitude and longitude parameters specify the location the object will
|
||||
be used. The library system allows for scenery packages to only provide
|
||||
objects to certain local locations. Only objects that are allowed at the
|
||||
latitude/longitude you provide will be returned.
|
||||
}
|
||||
FUNCTION XPLMLookupObjects(
|
||||
inPath : Pchar;
|
||||
inLatitude : single;
|
||||
inLongitude : single;
|
||||
inPath : XPLMString;
|
||||
inLatitude : Single;
|
||||
inLongitude : Single;
|
||||
enumerator : XPLMLibraryEnumerator_f;
|
||||
ref : pointer) : integer;
|
||||
{$IFDEF DELPHI}
|
||||
cdecl; external 'XPLM.DLL';
|
||||
{$ELSE}
|
||||
cdecl; external '';
|
||||
{$ENDIF}
|
||||
ref : pointer) : Integer;
|
||||
cdecl; external XPLM_DLL;
|
||||
|
||||
{$ENDIF XPLM200}
|
||||
|
||||
{$ENDIF}
|
||||
IMPLEMENTATION
|
||||
|
||||
END.
|
||||
Reference in new issue
Block a user