Runway camera location control#144
Runway camera location control#144jason-watkins merged 8 commits intonasa:developfrom flyingk:camera
Conversation
Compatibility with existing software
|
Hi Kai, Thanks for the PR! Always happy to see people upstream new features. It looks like you've got some mixed tabs and spaces going on in this code. When I first wrote this project, I was a tab purist, so the current code uses tabs over spaces. If you could update the new code to use tabs I would appreciate it, and I'll give this a closer look when I have a chance. Sorry to be pedantic, but I think it keeps the code easier to work with in the long run. |
xpcPlugin/MessageHandlers.cpp
Outdated
|
|
||
| if(type == 79 && enable_camera_location == 1) // runway camera view | ||
| { | ||
| static struct camera_properties campos; |
There was a problem hiding this comment.
Does this need to be static?
There was a problem hiding this comment.
The camera callback accesses this as long at it is being called. So if the variable is destroyed at the end of the function, the camera looses the position information and the screen goes black.
Alternatively this might become a class variable, so it is global in this scope... Or open to any other suggestions.
xpcPlugin/MessageHandlers.h
Outdated
|
|
||
| static int CamFunc( XPLMCameraPosition_t * outCameraPosition, int inIsLosingControl, void *inRefcon); | ||
|
|
||
| struct camera_properties{ |
There was a problem hiding this comment.
Rename to CameraProperties to be consistent with project naming conventions
|
|
||
| struct camera_properties{ | ||
| double loc[3]; | ||
| float direction[3]; |
There was a problem hiding this comment.
Is direction used? I don't see it anywhere else in the PR changes...
There was a problem hiding this comment.
I have included it since it is a controllable property, which is currently being calculated by the code. But someone might want to set the cam orientation by hand and then these fields can be used. Have added that option to the camera call-back.
|
Sorry for taking so long to get back to this. I'm satisfied based on your comments that the implementation is reasonable. Thanks again for the contribution! |
|
Hi Jason,
thanks for merging. Am I allowed to edit the WIKI to update the documentation and the extended message format?
Thanks
Kai
… On 14 Nov 2018, at 16:56, Jason Watkins ***@***.***> wrote:
Sorry for taking so long to get back to this. I'm satisfied based on your comments that the implementation is reasonable.
Thanks again for the contribution!
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub <#144 (comment)>, or mute the thread <https://github.com/notifications/unsubscribe-auth/ACEuZlW4AJj4lpyFyPxut2tOHdedtLyPks5uvD0hgaJpZM4YQ87->.
|
|
Doesn't look like I can give you permission to edit it directly, but if you want to open an issue with the content, I'll be happy to integrate it. |
* Minor improvements to the handling of landing gear by the SetGear and HandlePOSI functions * sendPOSI command change (double for lat/lon/h) (#111) * Updated POSI to use doubles for lat/lon/alt, as step size for floats was unacceptably large at high longitudes. * Updated Java library for MATLAB, updated Java project, and updated Windows plugin binaries * Rolled back Java version to 1.7 for MATLAB compatibility * Update MessageHandlers.cpp * Update DataManager.cpp * Added pause functionality for individual a/c Adds new cases such that: 0: Unpauses all a/c 1: Pauses all a/c 2: Switches case for all a/c 100:119: Pauses a/c 0:19 200:219: Unpauses a/c 0:19 Updates log messages. Keeps the 0,1,2 arguments as they previously were. * Finished individual pause functionality * Update DataManager.cpp * Updated flags to allow for individual pause commands * Individual pause command documentation * Updated flags to allow for individual pause commands * Adding individual pause to documentation * Updated flags to allow for individual pause commands * Requested changes, cleaning * Update CMakeLists.txt Include "-fno-stack-protector" for linking and compiling for systems that do not have this have this flag as a default. * Enabling AI after setting position (#118) Previously, the code enabled the AI before setting the position of a/c, which negated its purpose. * Updated XPlane SDK to version 2.1.3 * Resolve function ambiguity for std::abs on mac Fixes #126 * Update copyright notice * Update Windows binaries * Update Linux binaries * Update version numbers * fix osx abs ambiguity (#142) * fix indexing error (#143) * Runway camera location control (#144) * update ignore * basics working * set cam pos remotely * log cam position * keep default behaviour, if short view message is received Compatibility with existing software * all to tabs * rename variable * option to use camera direction fields * Added UDP multicast for plugin discovery (#153) * Added Timer * Added UDPSocket::GetAddr * Added MessageHandlers::SendBeacon() * PoC of starting a timer on PluginEnable * C++11 * Added Timer to xcode project * C++11 in cmake * added Timer to cmake * use function pointer in Timer * moved Timer to namespace + wait for thread to join when stopping the timer * Windows: changed uint to unisgned short * Windows: Added Timer.h/cpp to project * GetAddr static * Send xplane and plugin version with BECN * SendBeacon with params * fixed file copyrights * Include functional to fix Linux compile error * review fixes * Send plugin receive port in BECN * review fixes * Fixed tabs vs spaces indentations (#157) * Java client BECN implementation (#155) * Added MS Azure Dev Ops CI integration (#162) * Do not build for i386 on macOS Use ARCHS_STANDARD to avoid the error “The i386 architecture is deprecated. You should update your ARCHS build setting to remove the i386 architecture.” * Fixed missing include The Visual Studio solution was not compiling * Fixed isnan ambigious refernce Ambigious reference when compiling on travis https://stackoverflow.com/questions/33770374/why-is-isnan-ambiguous-and-how-to-avoid-it * Set MSVC warning level to 3 Too many warnings were generated when building a Release build making Travis job to fail because of too much output * Use default toolset for Visual Studio AppVeyor recommends to set the default toolset * #include <cstdint> * Use MSVC ToolsVersion="14.0" # Conflicts: # xpcPlugin/xpcPlugin/xpcPlugin.vcxproj * Removed binaries from repository # Conflicts: # xpcPlugin/XPlaneConnect/64/win.xpl # xpcPlugin/XPlaneConnect/win.xpl * Added ms azure ci xcode linux linux + macos linux + macos removed branch filter win tests win tests Test all platfroms artifacts tests * output all binaries to ‘XPlaneConnect’ All platforms produce a binary in xpcPlugin/XPlaneConnect/ xpcPlugin/XPlaneConnect/64/ * Added ms azure GH deploy deploy stage GH release test trigger tags * Clean up yml file - Added variables - Added job decriptions * Ignore script to ignore .exp files + fixed output path * Renamed ms azure GH connection * Update service connection for azure pipeline * Added Python3 compatible xpc client. (#156) * Update Azure Pipelines service connection
This PR enables to control the location and zoom of the runway camera to simulate a remotely controlled aircraft piloting experience.
If an extended view message is received, the view is switched to runway view and the camera is placed at the coordinates specified in the message, pointing at the aircraft in pitch and yaw.
Default behaviour with the standard view message ensures compatibility with existing software.