summaryrefslogtreecommitdiffhomepage
path: root/X-Plane-SDK/CHeaders/XPLM/XPLMProcessing.h
diff options
context:
space:
mode:
Diffstat (limited to 'X-Plane-SDK/CHeaders/XPLM/XPLMProcessing.h')
-rwxr-xr-xX-Plane-SDK/CHeaders/XPLM/XPLMProcessing.h254
1 files changed, 254 insertions, 0 deletions
diff --git a/X-Plane-SDK/CHeaders/XPLM/XPLMProcessing.h b/X-Plane-SDK/CHeaders/XPLM/XPLMProcessing.h
new file mode 100755
index 0000000..99fb6ea
--- /dev/null
+++ b/X-Plane-SDK/CHeaders/XPLM/XPLMProcessing.h
@@ -0,0 +1,254 @@
+#ifndef _XPLMProcessing_h_
+#define _XPLMProcessing_h_
+
+/*
+ * Copyright 2005-2012 Sandy Barbour and Ben Supnik
+ *
+ * All rights reserved. See license.txt for usage.
+ *
+ * X-Plane SDK Version: 2.1.1
+ *
+ */
+
+/*
+ * This API allows you to get regular callbacks during the flight loop, the
+ * part of X-Plane where the plane's position calculates the physics of
+ * flight, etc. Use these APIs to accomplish periodic tasks like logging data
+ * and performing I/O.
+ *
+ * WARNING: Do NOT use these callbacks to draw! You cannot draw during flight
+ * loop callbacks. Use the drawing callbacks (see XPLMDisplay for more info)
+ * for graphics.
+ *
+ */
+
+#include "XPLMDefs.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***************************************************************************
+ * FLIGHT LOOP CALLBACKS
+ ***************************************************************************/
+/*
+ *
+ *
+ */
+
+
+
+#if defined(XPLM210)
+/*
+ * XPLMFlightLoopPhaseType
+ *
+ * You can register a flight loop callback to run either before or after the
+ * flight model is integrated by X-Plane.
+ *
+ */
+enum {
+ /* Your callback runs before X-Plane integrates the flight model. */
+ xplm_FlightLoop_Phase_BeforeFlightModel = 0
+
+ /* Your callback runs after X-Plane integrates the flight model. */
+ ,xplm_FlightLoop_Phase_AfterFlightModel = 1
+
+
+};
+typedef int XPLMFlightLoopPhaseType;
+#endif /* XPLM210 */
+
+#if defined(XPLM210)
+/*
+ * XPLMFlightLoopID
+ *
+ * This is an opaque identifier for a flight loop callback. You can use this
+ * identifier to easily track and remove your callbacks, or to use the new
+ * flight loop APIs.
+ *
+ */
+typedef void * XPLMFlightLoopID;
+#endif /* XPLM210 */
+
+/*
+ * XPLMFlightLoop_f
+ *
+ * This is your flight loop callback. Each time the flight loop is iterated
+ * through, you receive this call at the end. You receive a time since you
+ * were last called and a time since the last loop, as well as a loop counter.
+ * The 'phase' parameter is deprecated and should be ignored.
+ *
+ * Your return value controls when you will next be called. Return 0 to stop
+ * receiving callbacks. Pass a positive number to specify how many seconds
+ * until the next callback. (You will be called at or after this time, not
+ * before.) Pass a negative number to specify how many loops must go by until
+ * you are called. For example, -1.0 means call me the very next loop. Try
+ * to run your flight loop as infrequently as is practical, and suspend it
+ * (using return value 0) when you do not need it; lots of flight loop
+ * callbacks that do nothing lowers x-plane's frame rate.
+ *
+ * Your callback will NOT be unregistered if you return 0; it will merely be
+ * inactive.
+ *
+ * The reference constant you passed to your loop is passed back to you.
+ *
+ */
+typedef float (* XPLMFlightLoop_f)(
+ float inElapsedSinceLastCall,
+ float inElapsedTimeSinceLastFlightLoop,
+ int inCounter,
+ void * inRefcon);
+
+#if defined(XPLM210)
+/*
+ * XPLMCreateFlightLoop_t
+ *
+ * XPLMCreateFlightLoop_t contains the parameters to create a new flight loop
+ * callback. The strsucture can be expanded in future SDKs - always set
+ * structSize to the size of your structure in bytes.
+ *
+ */
+typedef struct {
+ int structSize;
+ XPLMFlightLoopPhaseType phase;
+ XPLMFlightLoop_f callbackFunc;
+ void * refcon;
+} XPLMCreateFlightLoop_t;
+#endif /* XPLM210 */
+
+/*
+ * XPLMGetElapsedTime
+ *
+ * This routine returns the elapsed time since the sim started up in decimal
+ * seconds.
+ *
+ */
+XPLM_API float XPLMGetElapsedTime(void);
+
+/*
+ * XPLMGetCycleNumber
+ *
+ * This routine returns a counter starting at zero for each sim cycle
+ * computed/video frame rendered.
+ *
+ */
+XPLM_API int XPLMGetCycleNumber(void);
+
+/*
+ * XPLMRegisterFlightLoopCallback
+ *
+ * This routine registers your flight loop callback. Pass in a pointer to a
+ * flight loop function and a refcon. inInterval defines when you will be
+ * called. Pass in a positive number to specify seconds from registration
+ * time to the next callback. Pass in a negative number to indicate when you
+ * will be called (e.g. pass -1 to be called at the next cylcle). Pass 0 to
+ * not be called; your callback will be inactive.
+ *
+ */
+XPLM_API void XPLMRegisterFlightLoopCallback(
+ XPLMFlightLoop_f inFlightLoop,
+ float inInterval,
+ void * inRefcon);
+
+/*
+ * XPLMUnregisterFlightLoopCallback
+ *
+ * This routine unregisters your flight loop callback. Do NOT call it from
+ * your flight loop callback. Once your flight loop callback is
+ * unregistered, it will not be called again.
+ *
+ */
+XPLM_API void XPLMUnregisterFlightLoopCallback(
+ XPLMFlightLoop_f inFlightLoop,
+ void * inRefcon);
+
+/*
+ * XPLMSetFlightLoopCallbackInterval
+ *
+ * This routine sets when a callback will be called. Do NOT call it from your
+ * callback; use the return value of the callback to change your callback
+ * interval from inside your callback.
+ *
+ * inInterval is formatted the same way as in XPLMRegisterFlightLoopCallback;
+ * positive for seconds, negative for cycles, and 0 for deactivating the
+ * callback. If inRelativeToNow is 1, times are from the time of this call;
+ * otherwise they are from the time the callback was last called (or the time
+ * it was registered if it has never been called.
+ *
+ */
+XPLM_API void XPLMSetFlightLoopCallbackInterval(
+ XPLMFlightLoop_f inFlightLoop,
+ float inInterval,
+ int inRelativeToNow,
+ void * inRefcon);
+
+#if defined(XPLM210)
+/*
+ * XPLMCreateFlightLoop
+ *
+ * This routine creates a flight loop callback and returns its ID. The flight
+ * loop callback is created using the input param struct, and is inited to be
+ * unscheduled.
+ *
+ */
+XPLM_API XPLMFlightLoopID XPLMCreateFlightLoop(
+ XPLMCreateFlightLoop_t * inParams);
+#endif /* XPLM210 */
+
+#if defined(XPLM210)
+/*
+ * XPLMDestroyFlightLoop
+ *
+ * This routine destroys a flight loop callback by ID.
+ *
+ */
+XPLM_API void XPLMDestroyFlightLoop(
+ XPLMFlightLoopID inFlightLoopID);
+#endif /* XPLM210 */
+
+#if defined(XPLM210)
+/*
+ * XPLMScheduleFlightLoop
+ *
+ * This routine schedules a flight loop callback for future execution. If
+ * inInterval is negative, it is run in a certain number of frames based on
+ * the absolute value of the input. If the interval is positive, it is a
+ * duration in seconds.
+ *
+ * If inRelativeToNow is true, ties are interpretted relative to the time this
+ * routine is called; otherwise they are relative to the last call time or the
+ * time the flight loop was registered (if never called).
+ *
+ * THREAD SAFETY: it is legal to call this routine from any thread under the
+ * following conditions:
+ *
+ * 1. The call must be between the beginning of an XPLMEnable and the end of
+ * an XPLMDisable sequence. (That is, you must not call this routine from
+ * thread activity when your plugin was supposed to be disabled. Since
+ * plugins are only enabled while loaded, this also implies you cannot run
+ * this routine outside an XPLMStart/XPLMStop sequence.)
+ *
+ * 2. You may not call this routine re-entrantly for a single flight loop ID.
+ * (That is, you can't enable from multiple threads at the same time.)
+ *
+ * 3. You must call this routine between the time after XPLMCreateFlightLoop
+ * returns a value and the time you call XPLMDestroyFlightLoop. (That is, you
+ * must ensure that your threaded activity is within the life of the object.
+ * The SDK does not check this for you, nor does it synchronize destruction of
+ * the object.)
+ *
+ * 4. The object must be unscheduled if this routine is to be called from a
+ * thread other than the main thread.
+ *
+ */
+XPLM_API void XPLMScheduleFlightLoop(
+ XPLMFlightLoopID inFlightLoopID,
+ float inInterval,
+ int inRelativeToNow);
+#endif /* XPLM210 */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif