- Joined
- Jan 14, 2008
- Messages
- 9,218
- Reaction score
- 1,566
- Points
- 203
- Location
- VA
- Website
- alteaaerospace.com
- Preferred Pronouns
- he/him
Hi all,
New XR maintenance versions have been released along with updated XRVesselCtrl 3.0 APIs. Changes include:
As always, you can get the latest XR releases from my Web page.
EDIT 25-Aug-2013: The XR DLLs below were linked against Orbiter Beta 121103. Please see this post in the Orbiter-beta-compatible XR DLLs thread for the latest XR Orbiter-beta-compatible DLLs.
I have also built some Orbiter-beta-compatible XR DLL versions. To install one, simply drop the new XR DLL overtop of your existing XR DLL installed from the latest publicly-released XR version:
DeltaGliderXR1-1.11 DLL for Orbiter beta
XR2Ravenstar-1.6 DLL for Orbiter beta
XR5Vanguard-1.9 DLL for Orbiter beta
Known Orbiter Beta issues:
Happy Orbiting! :tiphat:
New XR maintenance versions have been released along with updated XRVesselCtrl 3.0 APIs. Changes include:
- Added conductive heat transfer logic to the XR heating code to make it more realistic when flying in dense atmosphere. [Requested by Keatah]
- Added payload calls to the XRVesselCtrl 3.0 APIs [Requested by Russell Hicks]:
Code:
// Returns the total number of payload bay slots in this XR vessel (1-n)
virtual int GetPayloadBaySlotCount() const = 0;
// Returns true if the specified payload bay slot is free
// slotNumber: 1 <= n <= GetPayloadBaySlotCount()
virtual bool IsPayloadBaySlotFree(const int slotNumber) const = 0;
// Returns details about an XR payload bay slot. Returns NULL if slotNumber is invalid.
// slotNumber: 1 <= n <= GetPayloadBaySlotCount()
// slotDataOut: will be populated with data for the specified slot if slotNumber is valid. If slotNumber is invalied, the contents of slotDataOut are not changed.
// Returns: true if slotDataOut successfully populated (i.e., slotNumber was valid)
virtual bool GetPayloadSlotData(const int slotNumber, XRPayloadSlotData &slotDataOut) = 0;
// Returns true if the supplied vessel 1) is an XR-compatible payload vessel, and 2) can be latched into the specified slot (i.e., it will fit)
// Note: this does NOT check the status of the payload bay doors: it is the caller's responsibility to do that if desired.
// slotNumber: 1 <= n <= GetPayloadBaySlotCount()
virtual bool CanAttachPayload(const OBJHANDLE hPayloadVessel, const int slotNumber) const = 0;
// Attempts to grapple the given payload vessel into the specified slot; there is no distance checks, although there is a size check.
// Note: hPayloadVessel must be an XR payload module in order to be gappled into the payload bay.
// Note: this does NOT check the status of the payload bay doors: it is the caller's responsibility to do that if desired.
// slotNumber: 1 <= n <= GetPayloadBaySlotCount()
// Returns: true on success, false if payload could not be grappled into the requested slot
virtual bool GrapplePayloadModuleIntoSlot(const OBJHANDLE hPayloadVessel, const int slotNumber) = 0;
// Detaches a payload vessel from the specified slot at the specified delta-V along the Y axis (up out of the bay).
// You should normally only call this on vessels that are in space.
// Note: this does NOT check the status of the payload bay doors: it is the caller's responsibility to do that if desired.
// slotNumber: 1 <= n <= GetPayloadBaySlotCount()
// deltaV = +Y deployment velocity in meters-per-second (e.g., 0.2)
// Returns: true on success, false if slot is invalid or no payload is attached in the specified slot
virtual bool DeployPayloadInFlight(const int slotNumber, const double deltaV) = 0;
// Detaches a payload vessel from the specified slot and moves it to alongside the ship on the ground.
// You should normally only call this on vessels that are landed and stationary.
// Note: this does NOT check the status of the payload bay doors: it is the caller's responsibility to do that if desired.
// slotNumber: 1 <= n <= GetPayloadBaySlotCount()
// Returns: true on success, false if slot is invalid or no payload is attached in the specified slot
virtual bool DeployPayloadWhileLanded(const int slotNumber) = 0;
// Detaches all payload vessels at the specified delta-V along the Y axis (up out of the bay).
// You should normally only call this on vessels that are in space.
// Note: this does NOT check the status of the payload bay doors: it is the caller's responsibility to do that if desired.
// deltaV = +Y deployment velocity in meters-per-second (e.g., 0.2)
// Returns: number of payload vessels deployed
virtual int DeployAllPayloadInFlight(const double deltaV) = 0;
// Detaches all payload vessels and moves them to alongside the ship on the ground.
// You should normally only call this on vessels that are landed and stationary.
// Note: this does NOT check the status of the payload bay doors: it is the caller's responsibility to do that if desired.
// Returns: number of payload vessels deployed
virtual int DeployAllPayloadWhileLanded() = 0;
// contains data about an XR payload bay slot
struct XRPayloadSlotData
{
VESSEL *hCargoModuleVessel; // Orbiter vessel handle of payload module attached in this slot; will be NULL if slot is empty
XRVesselCtrl *pParentXRVessel; // Orbiter vessel handle of the XR vessel to which this bay slot belongs
ATTACHMENTHANDLE hXRAttachmentHandle; // XR vessel's attachment handle for this bay slot; will never be NULL
int SlotNumber; // 1-n
VECTOR3 localCoordinates; // XR-vessel-relative coordinates to the center of this payload slot
bool IsOccupied; // true if a payload module occupies this slot
VECTOR3 Dimensions; // width (X), height (Y), length (Z)
int BayLevel; // 1-n (will be one except for multi-level payload bays such as the XR5's)
};
- Added the following new methods to the XRVesselCtrl 3.0 APIs:
Code:
// Enables or disables MWS test mode (i.e., same as pressing or releasing the 'Test' MWS button)
// Returns: previous state of MWS test mode
virtual bool SetMWSTest(bool bTestMode) = 0;
// Returns true if 'recenter the center-of-gravity' mode is enabled
virtual bool GetRecenterCOGMode() const = 0;
// Enable or disable 'recenter the center-of-gravity' mode.
// Returns: true on success, false if mode could not be set because no pilot is on board
virtual bool SetRecenterCOGMode(const bool bEnableRecenterMode) = 0;
// Returns the status of the external cooling line.
virtual XRDoorState GetExternalCoolingState() const = 0;
// Deploys or retracts the external cooling line and shows a success or failure message on the secondary HUD.
// Returns: true on success, false on error
virtual bool SetExternalCoolingState(const bool bEnabled) = 0;
// Sets fuel cross-feed mode and shows a status message on the secondary HUD
// state: XF_MAIN, XF_OFF, or XF_RCS
// Returns: true on success, false if state is invalid or no crew members on board
virtual bool SetCrossFeedMode(XRXFEED_STATE state) = 0;
- Added the following new XRSystemStatusRead fields to the XRVesselCtrl 3.0 APIs:
Code:
// Fields added in API version 3.0
bool MWSAlarmState; // true = MWS alarm active, false = alarm silenced via alarm reset or no warning active
bool COGAutoMode; // true = center-of-gravity shift in auto-mode because the Attitude Hold or Descent Hold autopilot is engaged
bool InternalSystemsFailure;// true = internal systems failed due to coolant overheat
double CenterOfGravity; // CoG shift in meters: 0 = centered, < 0 is forward, > 0 is aft
double CabinO2Level; // Oxygen fraction in cabin; nominal = .209 (20.9%)
double CoolantTemp; // in degrees C
double NoseconeTemp; // in Kelvin
double LeftWingTemp; // in Kelvin
double RightWingTemp; // in Kelvin
double CockpitTemp; // external cockpit hull temperature in Kelvin
double TopHullTemp; // in Kelvin
double MaxSafeNoseconeTemp; // in Kelvin
double MaxSafeWingTemp; // in Kelvin
double MaxSafeCockpitTemp; // in Kelvin
double MaxSafeTopHullTemp; // in Kelvin
- Fixed bug where having 'CONFIG_OVERRIDE_MainFuelISP' in the scenario file caused the XR vessel to behave as though 'EnableATMThrustReduction=0' was set in the XR configuration file. [Reported by Blixel]
- Fixed bug where the engine efficiency indiciator would disappear when flying in extremely dense atmospheres (e.g., on Venus).
- Cosmetic bugfix to set the XR5's landing gear to fully compressed when the gear collapses or the ship crashes. [Reported by Woo482]
- You can now reset the MWS (Master Warning System) during replays. [Requested by Blixel]
- Added code to automatically rescan the payload bay at regular intervals to detect when another add-on manually removed a payload vessel from the bay. [Requested by Russell Hicks.]
- You can now use hotkeys in addition to mouse clicks to control the following XR instruments during replays:
Code:
CTRL-T Toggle tertiary HUD on/off.
CTRL-[1-5] Select secondary HUD mode.
CTRL-H Hide/show HUD.
ALT-H Switch to next HUD color.
CTRL-W Reset the MWS (Master Warning System)
[0-9] Select MDA mode.
D Select next MDA mode.
ALT-D Select previous MDA mode.
- Fixed bug where fuel in a payload bay tank would sometimes vanish when added via the payload editor [Reported by Blixel]
As always, you can get the latest XR releases from my Web page.
EDIT 25-Aug-2013: The XR DLLs below were linked against Orbiter Beta 121103. Please see this post in the Orbiter-beta-compatible XR DLLs thread for the latest XR Orbiter-beta-compatible DLLs.
I have also built some Orbiter-beta-compatible XR DLL versions. To install one, simply drop the new XR DLL overtop of your existing XR DLL installed from the latest publicly-released XR version:
DeltaGliderXR1-1.11 DLL for Orbiter beta
XR2Ravenstar-1.6 DLL for Orbiter beta
XR5Vanguard-1.9 DLL for Orbiter beta
Known Orbiter Beta issues:
- OrbiterSound does not play custom wav files under the Orbiter beta, so custom XR voice callouts and sound effects will not play. More information here.
- XR vessel gear is sunk into the ground somewhat; this is purely a visual issue and will be fixed before new Orbiter version ships. It is occurring because the Orbiter core adjusts the vessel's touchdown points based on touchdown point compression.
Happy Orbiting! :tiphat:
Last edited: