Compare commits

...
164 Commits
Author SHA1 Message Date
Mamadou Babaei dbd252f487 bump the plugin version to v1.3.0 2023-04-28 01:19:56 +02:00
Mamadou Babaei 37efb4cf51 temporarily revert changes that are not part of the v1.3.0 release 2023-04-28 01:19:56 +02:00
Mamadou Babaei eded9f5ad5 bump senseglove libraries for linux and android to v2.6.0-aac3d56 2023-04-28 01:19:55 +02:00
Mamadou Babaei 82c3993ea9 bump the senseglove libraries for windows/msvc to v2.6.0-aac3d56 2023-04-28 01:19:55 +02:00
Mamadou Babaei 873a850498 document recent changes 2023-04-28 01:19:54 +02:00
Mamadou Babaei a1d78fa767 document the senseglove libraries bump in the changelog 2023-04-28 01:19:54 +02:00
Mamadou Babaei 7b4b06e3d0 adjust senseglove/unreal coordinate system conversions according to changes in the recent sgcore release 2023-04-28 01:19:54 +02:00
Mamadou Babaei daa22b3940 fix a gramatical error 2023-04-28 01:19:54 +02:00
Mamadou Babaei cf8fc5fcda add a debug virtual hand and some other fixes 2023-04-28 01:19:54 +02:00
Mamadou Babaei 7b57334ed0 fix the hand right hand offset 2023-04-28 01:19:54 +02:00
Mamadou Babaei 22ca963bd6 remove redundant headers 2023-04-28 01:19:54 +02:00
Mamadou Babaei 66d0201d12 fix debug gizmo default colors 2023-04-28 01:19:54 +02:00
Mamadou Babaei 3b68860eeb refactor the debug gizmo draw method 2023-04-28 01:19:54 +02:00
Mamadou Babaei 649d88e85d update the changelog with unreleased changes 2023-04-28 01:19:54 +02:00
Mamadou Babaei 2ff9e6f984 refactor the wrist tracker's debug gzmo settings into a ustruct in order to be re-used 2023-04-28 01:19:54 +02:00
Mamadou Babaei 51e1d5f252 fix gizmo drawing issue happens due to a null world object 2023-04-28 01:19:54 +02:00
Mamadou Babaei 66aec3cdea add a new generic senseglove debug module 2023-04-28 01:19:54 +02:00
Mamadou Babaei 1426e2b2c2 add the base implementation for the senseglove grab component 2023-04-28 01:19:54 +02:00
Mamadou Babaei cb9a319a6a increase the default DebugWristTrackerGizmoLength value in the plugin's settings 2023-04-28 01:19:54 +02:00
Mamadou Babaei 1539b09925 increase the default DebugWristTrackerGizmoLength value on the wrist tracker 2023-04-28 01:19:54 +02:00
Mamadou Babaei fd9b8d6a01 document unreleased changes 2023-04-28 01:19:54 +02:00
Mamadou Babaei e1353bb0ec fix the wrong hand offset calculations 2023-04-28 01:19:54 +02:00
Mamadou Babaei 7481d2cd8e fix the wrong tracker origin calculations 2023-04-28 01:19:54 +02:00
Mamadou Babaei 3d0e7fe8d2 fix the platform support matrix for unreal versions >= 5.0 2023-04-20 15:54:59 +02:00
Mamadou Babaei da7bc22ed7 minor code improvements and clean up 2023-04-20 15:54:59 +02:00
Mamadou Babaei a54d252971 fix the directory structure 2023-04-11 21:05:17 +02:00
Mamadou Babaei d711d42562 remove the development virtual hand mesh from master and all the release branches 2023-04-11 20:57:34 +02:00
Mamadou Babaei 3c56af0e1f bump the plugin version to v1.2.1 2023-03-30 06:42:46 +02:00
Mamadou Babaei 9cbdf5cea7 add the engine settings module into the private include paths for the senseglove settings module in order to solve run uat build issues 2023-03-30 06:22:27 +02:00
Mamadou Babaei 032422de1c remove the engine settings module from the senseglove module's private dependencies list 2023-03-30 06:14:59 +02:00
Mamadou Babaei 0f89d1c4dd remove the launch and settings from the android module's private includes 2023-03-30 05:58:15 +02:00
Mamadou Babaei 8d289c0f2f bump the plugin version to v1.2.0 2023-03-28 21:38:59 +02:00
Mamadou Babaei 62a2dd44f0 add the new dev/test hand model (this hand mesh is not meant to be published) 2023-03-28 18:28:01 +02:00
Mamadou Babaei c3001c588c alternative approach to constructor helpers in order to set the default hand mesh as it won't causes annoying ue pop-up cdo messages 2023-03-28 18:28:01 +02:00
Mamadou Babaei f3b21fecfa remove the old virtual hand model mesh 2023-03-28 18:28:00 +02:00
Mamadou Babaei 94e1b9ffcb fix the hand animation implementation and angle conversions to work with the standard ue5.1+ hand from epic 2023-03-28 18:28:00 +02:00
Mamadou Babaei 01078b6cd6 add missing paths headers that causes uat build issues 2023-03-28 11:45:17 +02:00
Mamadou Babaei a62f615036 add missing vershon headers and clean up unused headers 2023-03-28 11:45:16 +02:00
Mamadou Babaei 5213282f25 fix uat errors C4458 when building the virtual hand component 2023-03-28 11:22:22 +02:00
Mamadou Babaei 58712b48ad remove SGContentBrowserExtension_SKeleton and clean up the editor module 2023-03-28 10:34:53 +02:00
Mamadou Babaei 1684a40c20 remove SGAssetTypeActions_Skeleton, SGSkeletonEditor, and SGSkeletonEditorCommands classes 2023-03-28 10:34:53 +02:00
Mamadou Babaei cbcb6abaee add a content browser extension as an alternative to modify the ref pose 2023-03-28 10:34:53 +02:00
Mamadou Babaei 1ff21f70c7 add log template specialization for ftransform 2023-03-28 10:34:53 +02:00
Mamadou Babaei 3020fcdd7a add new experiments with the SGAssetTypeActions_Skeleton 2023-03-28 10:34:53 +02:00
Mamadou Babaei d3467ac7f2 add custom asset type actions for skeletons 2023-03-28 10:34:53 +02:00
Mamadou Babaei 4a212edbca add a message dialog and instruct the user to use the context menu in order to save the skeleton asset 2023-03-28 10:34:53 +02:00
Mamadou Babaei 5ebcb583f6 fix a deprecation warning on ue5 2023-03-28 10:34:53 +02:00
Mamadou Babaei 9b99399641 minor changelog fix 2023-03-28 10:34:52 +02:00
Mamadou Babaei 691fd43cd1 document the android calibration in the changelog 2023-03-28 10:34:52 +02:00
Mamadou Babaei 716ce49ca7 add virtual destructors 2023-03-28 10:34:52 +02:00
Mamadou Babaei f4a368a61c fix the skeleton editor crash with a working button from senseglove on the toolbar 2023-03-28 10:34:52 +02:00
Mamadou Babaei 22c97d2d77 first attemp at extending the skeleton editor that also crashes the editor once opened 2023-03-28 10:34:52 +02:00
Mamadou Babaei e89643f8d0 add missing header that causes build issues on ue 4.27 2023-03-28 10:34:52 +02:00
Mamadou Babaei 24eb573007 update the changelog 2023-03-28 10:34:52 +02:00
Mamadou Babaei 3b29f54622 clean up editor code from the virtual hand actor in order to fix wrist tracking issues 2023-03-28 10:34:52 +02:00
Mamadou Babaei 61e4aa2e6a force the wrist tracker to track the right hand on init/begin/construct 2023-03-28 10:34:52 +02:00
Mamadou Babaei 0dccac6432 add event handler lambdas for wrist tracker component of the virtual ahnd actor 2023-03-28 10:34:52 +02:00
Mamadou Babaei 12bfcfe80d functional wrist tracker component 2023-03-28 10:34:52 +02:00
Mamadou Babaei 407d4ea14c add an almost complete wrist tracker component implementation 2023-03-28 10:34:52 +02:00
Mamadou Babaei 1dff735623 fix multiple issues with the virtual hand component and the plugin settings 2023-03-28 10:34:52 +02:00
Mamadou Babaei 1834ea5d5c explicitly assign motion controllers to the proper hands 2023-03-28 10:34:52 +02:00
Mamadou Babaei 29d2aad490 bump senseglove libraries windows/msvc to v2.5.0-8069342 2023-03-28 10:34:52 +02:00
Mamadou Babaei 82f354e340 bump senseglove libraries and headers for linux and android to v2.5.0-8069342 2023-03-28 10:34:51 +02:00
Mamadou Babaei d4b06e062e add new settings accessors for c++ and blueprints 2023-03-28 10:34:50 +02:00
Mamadou Babaei 4a005a85b0 add wrist tracking debug settings 2023-03-28 10:34:50 +02:00
Mamadou Babaei 919e7f17dd allow setting custom hardware offset through the plugin settings 2023-03-28 10:34:50 +02:00
Mamadou Babaei 31cb7ee20b add missing engine module that causes build issues on android 2023-03-28 10:34:50 +02:00
Mamadou Babaei ae268ebde7 move the pimpl initialization to the constructor 2023-03-28 10:34:50 +02:00
Mamadou Babaei 220ddf28a6 move the defaults to the constructor 2023-03-28 10:34:50 +02:00
Mamadou Babaei 091b0ade32 make the senseglove settings a singleton with engine subsystem lifetime and fix the blueprint accessors 2023-03-28 10:34:50 +02:00
Mamadou Babaei b0c32ccad4 add the senseglove settings kismet module 2023-03-28 10:34:50 +02:00
Mamadou Babaei 838b5fe557 some improvements for the settings module 2023-03-28 10:34:49 +02:00
Mamadou Babaei 78735026c2 minor fixes in the settings module 2023-03-28 10:34:49 +02:00
Mamadou Babaei e1ced44a69 add a senseglove settings manager module 2023-03-28 10:34:49 +02:00
Mamadou Babaei f92e870c56 fix the changelog typos and errors 2023-03-28 10:34:49 +02:00
Mamadou Babaei a4941d4d7d whitespace fix 2023-03-28 10:34:49 +02:00
Mamadou Babaei 4a72839ece add special android directory methods and initialization args 2023-03-28 10:34:49 +02:00
Mamadou Babaei 1a89f202c5 initial attempt at implementing android calibration 2023-03-28 10:34:49 +02:00
Mamadou Babaei f1b14c7673 bump senseglove libraries and headers for linux and android to v2.4.3-2eceacb 2023-03-28 10:34:48 +02:00
Mamadou Babaei a35e706283 virtual hand fixes especially for android 2023-03-28 10:34:48 +02:00
Mamadou Babaei 708fce2f0c fix virtual hand crashes and editor visibility issues 2023-03-28 10:34:47 +02:00
Mamadou Babaei 9116e4a234 fix comments 2023-03-28 10:34:47 +02:00
Mamadou Babaei 9ee7e3f0df fix android architecture detection issues on ue 5.2 2023-03-28 10:34:47 +02:00
Mamadou Babaei 4a03aedb3c add a temporary workaround for the android crashes and the hidden if glove not found functionality 2023-03-28 10:34:47 +02:00
Mamadou Babaei 1eadfd249b fix native-toolchain v19 build issues 2023-03-28 10:34:47 +02:00
Mamadou Babaei d2a1583217 integrate the virtual hand into the sgpawn 2023-03-28 10:34:47 +02:00
Mamadou Babaei 786c7d8380 clarify android on 5.2 is not supported, yet 2023-03-28 10:34:47 +02:00
Mamadou Babaei 53a70569bd minor fixes 2023-03-28 10:34:47 +02:00
Mamadou Babaei 4f01d61640 update the changelog in order to reflect the latest status of unreleased changes 2023-03-28 10:34:47 +02:00
Mamadou Babaei a0bd230c73 dump some animation errors to the logs inside the editor instead of crashing 2023-03-28 10:34:47 +02:00
Mamadou Babaei 81eb3bb90c working in-editor hand animation 2023-03-28 10:34:47 +02:00
Mamadou Babaei 8253ec277d distinguish between virtual hand actor and component and animate the component 2023-03-28 10:34:47 +02:00
Mamadou Babaei 9598c772fc add a new component-based class for the virtual hand 2023-03-28 10:34:47 +02:00
Mamadou Babaei 01eed66701 add an empty sgpawn kismet library class 2023-03-28 10:34:47 +02:00
Mamadou Babaei 9ae0b1ea2f document the new senseglove core types module 2023-03-28 10:34:46 +02:00
Mamadou Babaei a6baab575c add the virtual hand kismet library 2023-03-28 10:34:46 +02:00
Mamadou Babaei 79c31ecf50 minor commit fix 2023-03-28 10:34:46 +02:00
Mamadou Babaei d80697ee72 drop the redundant sgconnecttypes 2023-03-28 10:34:46 +02:00
Mamadou Babaei 50f76c7a0d move all sg array types into their corresponding *core modules 2023-03-28 10:34:46 +02:00
Mamadou Babaei 846dac5a88 minor api validation fixes 2023-03-28 10:34:46 +02:00
Mamadou Babaei c314920d89 minor fix 2023-03-28 10:34:46 +02:00
Mamadou Babaei 55405672f8 bump senseglove libraries windows to v2.4.2-ba98cec 2023-03-28 10:34:46 +02:00
Mamadou Babaei f2656f1bea bump senseglove libraries and headers for linux and android to v2.4.2-ba98cec 2023-03-28 10:34:44 +02:00
Mamadou Babaei eead79b8f5 remove the redundant sgplatform from the sgconnectimpl module 2023-03-28 10:34:43 +02:00
Mamadou Babaei 5ae86cbf66 purge the core impl module's dead code for the dropped engine versions: 4.22 to 4.26 and define SG_NOEXCEPT 2023-03-28 10:34:43 +02:00
Mamadou Babaei 5902aafff0 document 4.22 to 4.26 purge in the changelog 2023-03-28 10:34:43 +02:00
Mamadou Babaei 4e591d6290 initial attempt to cleanup dead code from the dropped engine versions: 4.22 to 4.26 2023-03-28 10:34:43 +02:00
Mamadou Babaei 46f885fa5a update the remarks section in readme file to reflect the latest platform support state 2023-03-28 10:34:43 +02:00
Mamadou Babaei 51190d6ead update the changelog for unreleased changes 2023-03-28 10:34:43 +02:00
Mamadou Babaei 96fb9c3c8e update the platform support matrix 2023-03-28 10:34:43 +02:00
Mamadou Babaei 9bde1878ed whitespace fix 2023-03-28 10:34:43 +02:00
Mamadou Babaei 7c271d30ce update the changelog for unreleased changes 2023-03-28 10:34:43 +02:00
Mamadou Babaei d61183a960 update unreal api to take care of radians/degrees conversions where possible 2023-03-28 10:34:43 +02:00
Mamadou Babaei caa0bf259a add more utility functions and templates for angles, specifically for handling floats 2023-03-28 10:34:43 +02:00
Mamadou Babaei e9a6fc3df0 almost working hand mondel animation adjusted to the api changes 2023-03-28 10:34:43 +02:00
Mamadou Babaei bdfb75920b rename sguitls/sgcoordinates utility class to sgangles and convert angles from radians to degrees and vice-versa between unreal and senseglove 2023-03-28 10:34:43 +02:00
Mamadou Babaei 2e5ba17d89 minor initialization fixes 2023-03-28 10:34:42 +02:00
Mamadou Babaei 25dca3f8f3 minor fix: move temp a variable 2023-03-28 10:34:42 +02:00
Mamadou Babaei b4cdbec91a mark a method as const 2023-03-28 10:34:42 +02:00
Mamadou Babaei 58ca6a5bca clean up redundant hand animation code 2023-03-28 10:34:42 +02:00
Mamadou Babaei f29c428b16 remove redundant reset to ref pose call 2023-03-28 10:34:42 +02:00
Mamadou Babaei 759c94bcbf use rotators instead of quats 2023-03-28 10:34:42 +02:00
Mamadou Babaei 4393af7317 improve the virtual hand model animation 2023-03-28 10:34:42 +02:00
Mamadou Babaei a31b14d48c rely on the reference pose instead of caching poses 2023-03-28 10:34:42 +02:00
Mamadou Babaei 854ce6a198 improved virtual hand model animation 2023-03-28 10:34:42 +02:00
Mamadou Babaei e0e743b63d bump senseglove libraries for windows/msvc to v2.4.1-d551398 2023-03-28 10:34:41 +02:00
Mamadou Babaei e32453dfef mention functional linux development support in the changelog 2023-03-28 10:34:41 +02:00
Mamadou Babaei d57d3ffa4a bump senseglove libraries and headers for linux and android to v2.4.1-d551398 2023-03-28 10:34:39 +02:00
Mamadou Babaei 8194072025 bump senseglove libraries for windows/msvc to v2.4.0-dc6c34b 2023-03-28 10:34:39 +02:00
Mamadou Babaei cf7fba949d bump senseglove libraries and headers for linux and android to v2.4.0-dc6c34b 2023-03-28 10:34:37 +02:00
Mamadou Babaei 0dd745bbe6 bump senseglove libraries for windows/msvc to v2.3.0-a9726bf 2023-03-28 10:34:37 +02:00
Mamadou Babaei 0ca24adee3 bump senseglove libraries for linux and android to the first fully linux-aware version: v2.3.0-a9726bf 2023-03-28 10:34:36 +02:00
Mamadou Babaei b947685598 apply the transform to the output pose 2023-03-28 10:34:35 +02:00
Mamadou Babaei 11534229f4 try a component transform 2023-03-28 10:34:35 +02:00
Mamadou Babaei 77d7b4eb23 add quat template specialization to the sglog module 2023-03-28 10:34:35 +02:00
Mamadou Babaei 25e8fd2d07 fix the EvaluateSkeletalControl_AnyThread crash 2023-03-28 10:34:35 +02:00
Mamadou Babaei dafc7c0ad6 revert back the last commit and ignore the last joint 2023-03-28 10:34:35 +02:00
Mamadou Babaei 2b818dd11b try an alternate implementation for copying animation data in order to remedy the virtual hand crash 2023-03-28 10:34:35 +02:00
Mamadou Babaei cf115e2782 bump senseglove thrid-party libraries for windows to v2.2.4-1eda0d8 2023-03-28 10:34:35 +02:00
Mamadou Babaei f709be4935 bump senseglove libraries for linux and android to v2.2.4-1eda0d8 2023-03-28 10:34:33 +02:00
Mamadou Babaei a0f3b84aab bump senseglove headers and libraries for linux and android to v2.2.3-39b3c2b 2023-03-28 10:34:32 +02:00
Mamadou Babaei de83672ef1 bump senseglove thrid-party libraries for windows to v2.2.3-39b3c2b 2023-03-28 10:34:31 +02:00
Mamadou Babaei a465321f9d bump senseglove headers and libraries for linux and android to v2.2.2-1725b91 2023-03-28 10:34:31 +02:00
Mamadou Babaei 392fcd4932 bump senseglove thrid-party libraries for windows to v2.2.2-1725b91 2023-03-28 10:34:30 +02:00
Mamadou Babaei 8a1e9ff300 add the msvc141 third-party directory to the directory tree 2023-03-28 10:34:30 +02:00
Mamadou Babaei fd257711c2 add the android module to the directory tree 2023-03-28 10:34:30 +02:00
Mamadou Babaei ff59e7f712 document the directory structure changes 2023-03-28 10:34:30 +02:00
Mamadou Babaei 06b27847cb bump windows/msvc binaries to v2.2.1-ca2f23d 2023-03-28 10:34:30 +02:00
Mamadou Babaei 94301a321c update senseglove libraries to v2.2.1-ca2f23d with per engine segregated android ndk support 2023-03-28 10:34:23 +02:00
Mamadou Babaei 0ea98272a9 updated documentation for the directory structure 2023-03-28 10:34:23 +02:00
Mamadou Babaei 14a43e0630 remove redundant Source/ThirdParty/lib/oculus directories 2023-03-28 10:34:23 +02:00
Mamadou Babaei a7f4a83850 updated documentation for the directory structure 2023-03-28 10:34:22 +02:00
Mamadou Babaei 9101d2061a update the platform support matrix 2023-03-28 10:34:22 +02:00
Mamadou Babaei 3e025f3e47 bump senseglove headers and libraries for windows/msvc to v2.2.0-eed9611 2023-03-28 10:34:22 +02:00
Mamadou Babaei 2ba5c0f2fc log the unreleased changes 2023-03-28 10:34:21 +02:00
Mamadou Babaei 66e60ff18a bump senseglove headers and libraries for linux and android to v2.2.0-eed9611 2023-03-28 10:34:21 +02:00
Mamadou Babaei 25f8ef6393 remove archaic pre-public-release dead code 2023-03-28 10:34:21 +02:00
Mamadou Babaei e30ca2c9ed virtual hand implementation with a crash from calling EvaluateSkeletalControl_AnyThread 2023-03-28 10:34:21 +02:00
Mamadou Babaei adcfa63415 fix impl owners 2023-03-28 10:34:20 +02:00
Mamadou Babaei 02cb09d504 add partion implementation of the virtual hand 2023-03-28 10:34:20 +02:00
Mamadou Babaei 89a9200413 fix vr hand asset issues 2023-03-28 10:34:20 +02:00
Mamadou Babaei e50a65ca92 add senseglove module base classes 2023-03-28 10:34:20 +02:00
Mamadou Babaei 955bb69cf9 add the virtual hand assets 2023-03-28 10:34:20 +02:00
Mamadou Babaei 3335ee2ec3 punctuation fix 2023-03-28 10:34:18 +02:00
426 changed files with 7396 additions and 6528 deletions
+63 -2
View File
@@ -5,6 +5,67 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [v1.3.0] - 2023-04-28
This release breaks ABI/API compatibility with the previous versions in addition to breaking coordinates systems conversions between Unreal Engine and the SenseGlove libraries.
### Added
- A new generic SenseGlove Debug module.
- A debug virtual hand.
### Fixed
- Fix the wrist tracker miscalculations for the Quest 2 controllers (other headsets might needs fixing as well, in that case future releases will address that).
- Minor code improvement and fixes.
- Minor documentation fixes.
### Changed
- Breaking API/ABI changes in the Settings and the main SenseGlove module due to some settings refactoring.
- Breaking changes in the SenseGlove/Unreal coordinates systems conversions due to underlying changes in the SenseGlove Core Libraries.
- SenseGlove libraries have been updated to v2.6.0-aac3d56.
## [v1.2.1] - 2023-03-30
### Fixed
- Fix RunUAT build issues with Android.
## [v1.2.0] - 2023-03-28
This release breaks ABI/API compatibility with the previous versions.
### Added
- Android / Oculus on-device glove calibration.
- Introduced the animated Virtual Hand Model (as a set of virtual hand and wrist tracker components and an actor) with in-editor animation availability.
- Introduced SGPawn, SGPlayerController, SGGameModeBase, etc classes.
- Added an internal SenseGloveCoreTypes module in order to share common SenseGloveCore types between various modules.
- Segregated Android binaries for NDK r21e (UE 4.27 and 5.0) and r25b (UE 5.1, 5.2).
- Fully functional and stable Linux development support.
- Fully functional and stable Unreal Engine 5.2 preview support has been added.
- Added a Plugin's settings manager and two new modules SenseGloveSettings and SenseGloveSettingsKismet.
### Changed
- SenseGlove libraries have been updated to the Linux-aware version: v2.5.0-8069342.
- API has changed to use degrees instead of radians.
- SGCoordinates utility class name has been changed to SGAngles and now the plugin API uses degrees in contrast of SenseGlove libraries by default.
- Migrate common nested array types into the SenseGloveTypes module from the SenseGloveCore module.
### Removed
- Removed a few thousands lines of archaic pre-public-release dead code.
- Dropped Android NDK r21b binaries used by the older engine versions.
- Purged the dead code for dropped engine versions by v1.1.1 (4.22, 4.23, 4.24, 4.25, and 4.26) that carried over to the current version.
- Removed redundant SGConnectImpl/SGPlatform.
- Removed redundant SGTypes/SGConnectTypes.
### Known Issues
- Wrist Tracker's offsets are a bit off (e.g. on Quest 2), scheduled to be fixed in the next patch release.
## [1.1.1] - 2023-02-07
### Added
@@ -14,8 +75,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
- Fix various Android build issues
- Some minor fixes and improvements
- Fix various Android build issues.
- Some minor fixes and improvements.
### Changed
+96 -22
View File
@@ -6,16 +6,17 @@ This repository relies on Git LFS for storing binary blobs (e.g. third-party lib
## Platform Support Matrix
| | **Windows (MSVC 2017)** | **Windows (MSVC 2019)** | **Windows (MSVC 2022)** | **Linux (Native Toolchain)** | **macOS** | **Oculus Mobile (Android NDK r21b)** |
|------|:-----------------------:|:-----------------------:|:-----------------------:|:----------------------------:|:---------:|:------------------------------------:|
| 4.22 | ⚠️ v1.0.x | ⚠️ v1.0.x | ❌ | ⚠️ v1.0.x | ❌ | |
| 4.23 | ⚠️ v1.0.x | ⚠️ v1.0.x | ❌ | ⚠️ v1.0.x | ❌ | |
| 4.24 | ⚠️ v1.0.x | ⚠️ v1.0.x | ❌ | ⚠️ v1.0.x | ❌ | |
| 4.25 | ⚠️ v1.0.x | ⚠️ v1.0.x | ❌ | ⚠️ v1.0.x | ❌ | |
| 4.26 | ⚠️ v1.0.x | ⚠️ v1.0.x | ❌ | ⚠️ v1.0.x | ❌ | |
| 4.27 | ✅ v1.1.x | ✅ v1.1.x | ✅ v1.1.x | ✅ v1.1.x | ❌ | ✅ v1.1.x |
| 5.0 | ✅ v1.1.x | ✅ v1.1.x | ✅ v1.1.x | ✅ v1.1.x | ❌ | ✅ v1.1.x |
| 5.1 | ✅ v1.1.x | ✅ v1.1.x | ✅ v1.1.x | ✅ v1.1.x | ❌ | ✅ v1.1.x |
| | **Windows (MSVC 2017)** | **Windows (MSVC 2019)** | **Windows (MSVC 2022)** | **Linux (Native Toolchain)** | **macOS** | **Oculus Mobile (Android NDK)** |
|:--------:|:-----------------------:|:-----------------------:|:-----------------------:|:----------------------------:|:---------:|:-------------------------------:|
| **4.22** | ⚠️ v1.0.x | ⚠️ v1.0.x | ❌ | ⚠️ v1.0.x | ❌ | |
| **4.23** | ⚠️ v1.0.x | ⚠️ v1.0.x | ❌ | ⚠️ v1.0.x | ❌ | |
| **4.24** | ⚠️ v1.0.x | ⚠️ v1.0.x | ❌ | ⚠️ v1.0.x | ❌ | |
| **4.25** | ⚠️ v1.0.x | ⚠️ v1.0.x | ❌ | ⚠️ v1.0.x | ❌ | |
| **4.26** | ⚠️ v1.0.x | ⚠️ v1.0.x | ❌ | ⚠️ v1.0.x | ❌ | |
| **4.27** | ✅ v1.3.x | ✅ v1.3.x | ✅ v1.3.x | ✅ v1.3.x | ❌ | ✅ v1.3.x (r21e) |
| **5.0** | | ✅ v1.3.x | ✅ v1.3.x | ✅ v1.3.x | ❌ | ✅ v1.3.x (r21e) |
| **5.1** | | ✅ v1.3.x | ✅ v1.3.x | ✅ v1.3.x | ❌ | ✅ v1.3.x (r25b) |
| **5.2** | ❌ | ✅ v1.3.x | ✅ v1.3.x | ✅ v1.3.x | ❌ | ✅ v1.3.x (r25b) |
* <code>✅</code> Supported
* <code>⚠️</code> Not supported by the latest release and might be lacking features
@@ -25,8 +26,9 @@ This repository relies on Git LFS for storing binary blobs (e.g. third-party lib
Remarks:
* Microsoft Visual Studio 2022 is not supported by Unreal Engine 4.22 through 4.26.
* All third-party libraries on Windows built against Windows SDK 10.0.
* Oculus support is only provided through the recommended Android NDK r21b by Epic Games.
* Supporting Unreal Engine 4.22 through 4.24 for Oculus development is a huge challenge due to limited Android NDK support (r14b to r18b); firstly, because of uncomplete C++11 standard library support, and second, as a result of a known bug in Unreal Engine, which falsely detects NDK r18b as unsupported r18c. Thus, only Unreal Engine 4.25+ support is provided for Android/Oculus development. Third, [wjwwood/serial](https://github.com/wjwwood/serial) requires Android NDK API Level 28+ in order to be built successfully, thus some older NDKs such as r14b, which is the recommended NDK by Epic Games for 4.22 to 4.24 cannot build the serial library.
* Oculus support is only provided through the recommended Android NDK versions by Epic Games.
* The Unreal Engine 4.27+ support is provided for Android/Oculus development.
* [wjwwood/serial](https://github.com/wjwwood/serial) requires Android NDK API Level 28+ in order to be built successfully, thus some older NDKs such as r14b.
* All third-party libraries target Android NDK API Level 29, thus any project relying on the plug-in should be build with the same NDK API Level.
## Changelog
@@ -52,7 +54,7 @@ Please note that modules postfixed with **Impl** are intended for interal use an
## Directory Structure
```
Source
/
├── Config
@@ -62,6 +64,8 @@ Source
├── SenseGlove (the UE-specific high-level API)
├── SenseGloveAndroid (the Android-specific module)
├── SenseGloveBuildHacks (uses Exceptions and RTTI, internally used for compiler-specific build hacks)
├── SenseGloveConnect (exposes part of the SGConnect low-level API to C++)
@@ -76,19 +80,27 @@ Source
├── SenseGloveCoreKismet (SGCoreCpp functionality exposed to Blueprints)
├── SenseGloveCoreTypes (exposes special public types from the SenseGloveCore module in order to be shared by with other modules)
├── SenseGloveEditor (the Editor module)
├── SenseGloveInterop (internally used for interoperability between RTTI disabled/enabled modules)
├── SenseGloveKismet(exposes Blueprints-specific functionality from the SenseGlove module)
├── SenseGloveKismet (exposes Blueprints-specific functionality from the SenseGlove module)
├── SenseGloveLog (the internal log module)
├── SenseGloveTypes (exposes various enums from the backend libraries)
├── SenseGloveSettings (the plugin's settings manager)
├── SenseGloveSettingsKismet (exposes Blueprints-specific functionality from the SenseGloveSettings module)
├── SenseGloveTypes (exposes various enums from the backend libraries and also types from the SenseGlove module)
├── SenseGloveUtils (the internal utility module)
└── ThirdParty (3rd-party dependencies)
├── android (.jar file Java libraries for Android)
├── include (header files)
│ │
@@ -103,6 +115,62 @@ Source
│ └── serial
└── lib (platform-specific pre-built binary dependencies)
├── android
│ │
│ ├── r21e (Android NDK r21e dependencies for UE 4.27 and 5.0)
│ │ │
│ │ │
│ │ ├── arm64 (64-bit Arm variant of Android)
│ │ │ │
│ │ │ ├── debug
│ │ │ │
│ │ │ └── release
│ │ │
│ │ ├── armv7 (32-bit ARM variant of Android)
│ │ │ │
│ │ │ ├── debug
│ │ │ │
│ │ │ └── release
│ │ │
│ │ ├── x64 (64-bit x86-64 variant of Android)
│ │ │ │
│ │ │ ├── debug
│ │ │ │
│ │ │ └── release
│ │ │
│ │ └── x86 (32-bit x86 variant of Android)
│ │ │
│ │ ├── debug
│ │ │
│ │ └── release
│ │
│ └── r25b (Android NDK r21b dependencies for UE 5.1)
│ │
│ │
│ ├── arm64 (64-bit Arm variant of Android)
│ │ │
│ │ ├── debug
│ │ │
│ │ └── release
│ │
│ ├── armv7 (32-bit ARM variant of Android)
│ │ │
│ │ ├── debug
│ │ │
│ │ └── release
│ │
│ ├── x64 (64-bit x86-64 variant of Android)
│ │ │
│ │ ├── debug
│ │ │
│ │ └── release
│ │
│ └── x86 (32-bit x86 variant of Android)
│ │
│ ├── debug
│ │
│ └── release
├── linux
│ │
@@ -112,19 +180,25 @@ Source
│ │ │
│ │ └── release
│ │
── v20 (UE 5.0 and 5.1 Linux dependencies)
── v20 (UE 5.0 and 5.1 Linux dependencies)
│ │ │
│ │ ├── debug
│ │ │
│ │ └── release
│ │
│ └── v21 (UE 5.2 Linux dependencies)
│ │
│ ├── debug
│ │
│ └── release
├── oculus
│ │
│ ├── debug
│ │
│ └── release
└── win64
├── msvc141 (Microsoft Visual Studio 2017 dependencies)
│ │
│ ├── debug
│ │
│ └── release
├── msvc142 (Microsoft Visual Studio 2019 dependencies)
│ │
+41 -1
View File
@@ -1,7 +1,7 @@
{
"FileVersion": 3,
"Version": 1,
"VersionName": "1.1.1",
"VersionName": "1.3.0",
"FriendlyName": "SenseGlove",
"Description": "Integrating the SenseGlove haptic controller into Unreal Engine",
"Category": "Virtual Reality",
@@ -110,6 +110,26 @@
"Win64"
]
},
{
"Name": "SenseGloveCoreTypes",
"Type": "Runtime",
"LoadingPhase": "PreDefault",
"WhitelistPlatforms": [
"Android",
"Linux",
"Win64"
]
},
{
"Name": "SenseGloveDebug",
"Type": "Runtime",
"LoadingPhase": "PreDefault",
"WhitelistPlatforms": [
"Android",
"Linux",
"Win64"
]
},
{
"Name": "SenseGloveEditor",
"Type": "Editor",
@@ -149,6 +169,26 @@
"Win64"
]
},
{
"Name": "SenseGloveSettings",
"Type": "Runtime",
"LoadingPhase": "PreDefault",
"WhitelistPlatforms": [
"Android",
"Linux",
"Win64"
]
},
{
"Name": "SenseGloveSettingsKismet",
"Type": "Runtime",
"LoadingPhase": "PreDefault",
"WhitelistPlatforms": [
"Android",
"Linux",
"Win64"
]
},
{
"Name": "SenseGloveTypes",
"Type": "Runtime",
@@ -0,0 +1,46 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
#include "SenseGlove/Animation/SGVirtualHandAnimInstance.h"
USGVirtualHandAnimInstance::USGVirtualHandAnimInstance(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
}
FSGVirtualHandAnimInstanceProxy* USGVirtualHandAnimInstance::CreateAnimInstanceProxy()
{
return new FSGVirtualHandAnimInstanceProxy();
}
@@ -0,0 +1,158 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
#include "SenseGlove/Animation/SGVirtualHandAnimInstanceProxy.h"
#include "BoneContainer.h"
#include "BoneControllers/AnimNode_ModifyBone.h"
#include "BonePose.h"
#include "Containers/Array.h"
#include "Containers/Map.h"
#include "Containers/UnrealString.h"
#include "Engine/SkeletalMesh.h"
#include "Math/Rotator.h"
#include "Runtime/Launch/Resources/Version.h"
#include "SGLog/SGLog.h"
#include "SenseGlove/Components/SGVirtualHandComponent.h"
FSGVirtualHandAnimInstanceProxy::FSGVirtualHandAnimInstanceProxy()
: FAnimInstanceProxy()
{
}
FSGVirtualHandAnimInstanceProxy::FSGVirtualHandAnimInstanceProxy(UAnimInstance* Instance)
: FAnimInstanceProxy(Instance)
{
}
void FSGVirtualHandAnimInstanceProxy::PreEvaluateAnimation(UAnimInstance* InAnimInstance)
{
FAnimInstanceProxy::PreEvaluateAnimation(InAnimInstance);
if (!IsValid(InAnimInstance))
{
return;
}
USGVirtualHandComponent* VirtualHand{Cast<USGVirtualHandComponent>(GetSkelMeshComponent())};
if (!IsValid(VirtualHand))
{
return;
}
BonesRotations.Empty();
if (!VirtualHand->IsGloveConnected())
{
return;
}
BonesRotations = VirtualHand->GetFingersBonesRotations();
}
bool FSGVirtualHandAnimInstanceProxy::Evaluate(FPoseContext& Output)
{
USGVirtualHandComponent* VirtualHand{Cast<USGVirtualHandComponent>(GetSkelMeshComponent())};
if (!IsValid(VirtualHand) && !VirtualHand->IsGloveConnected())
{
return FAnimInstanceProxy::Evaluate(Output);
}
const USkeletalMesh* HandMesh{VirtualHand->
#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 1
GetSkeletalMeshAsset()
#else /* ENGINE_MAJOR_VERSION == 5 && ENGINE_MINOR_VERSION >= 1 */
SkeletalMesh
#endif /* ENGINE_MAJOR_VERSION == 5 && ENGINE_MINOR_VERSION >= 1 */
};
if (!IsValid(HandMesh))
{
return FAnimInstanceProxy::Evaluate(Output);
}
const USkeleton* HandSkeleton{HandMesh->GetSkeleton()};
if (!IsValid(HandSkeleton))
{
return FAnimInstanceProxy::Evaluate(Output);
}
FComponentSpacePoseContext PoseContext{Output.AnimInstanceProxy};
PoseContext.Pose.InitPose(Output.Pose);
for (const TTuple<FName, FRotator>& Bone: BonesRotations)
{
FName BoneName{Bone.Key};
FRotator BoneRotation{Bone.Value};
const int32 BoneIndex = GetRequiredBones().GetPoseBoneIndexForBoneName(BoneName);
if (BoneIndex == INDEX_NONE)
{
SGLOG_WARNING(FString::Printf(TEXT("Could not find a bone index for '%s' finger bone!"),
*BoneName.ToString()));
continue;
}
FBoneReference BoneReference;
BoneReference.BoneName = MoveTemp(BoneName);
BoneReference.BoneIndex = BoneIndex;
BoneReference.bUseSkeletonIndex = true;
FAnimNode_ModifyBone BoneController;
BoneController.BoneToModify = MoveTemp(BoneReference);
BoneController.Rotation = MoveTemp(BoneRotation);
BoneController.RotationMode = EBoneModificationMode::BMM_Replace;
BoneController.RotationSpace = EBoneControlSpace::BCS_ParentBoneSpace;
BoneController.ScaleMode = EBoneModificationMode::BMM_Ignore;
BoneController.TranslationMode = EBoneModificationMode::BMM_Ignore;
if (BoneController.IsValidToEvaluate(HandSkeleton, Output.Pose.GetBoneContainer()))
{
TArray<FBoneTransform> BoneTransforms;
BoneController.EvaluateSkeletalControl_AnyThread(PoseContext, BoneTransforms);
const TArray<FBoneTransform>::SizeType BoneTransformsNum = BoneTransforms.Num();
if (BoneTransformsNum > 0)
{
PoseContext.Pose.LocalBlendCSBoneTransforms(BoneTransforms, 1.0f);
PoseContext.Pose.ConvertComponentPosesToLocalPoses(PoseContext.Pose, Output.Pose);
VirtualHand->MarkRenderStateDirty();
}
}
}
return true;
}
@@ -0,0 +1,736 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
#include "SenseGlove/Components/SGVirtualHandComponent.h"
#include "Animation/Skeleton.h"
#include "Components/SkeletalMeshComponent.h"
#include "Engine/SkeletalMesh.h"
#include "Kismet/GameplayStatics.h"
#include "Runtime/Launch/Resources/Version.h"
#include "UObject/ConstructorHelpers.h"
#include "SenseGlove/Animation/SGVirtualHandAnimInstance.h"
#include "SenseGlove/Components/SGWristTrackerComponent.h"
#include "SGConnect/SGConnect.h"
#include "SGCore/SGDeviceList.h"
#include "SGCore/SGHandPose.h"
#include "SGCore/SGHapticGlove.h"
#include "SGCore/SGHapticGloveHandProfiles.h"
#include "SGDebug/SGDebugVirtualHand.h"
#include "SGLog/SGLog.h"
struct USGVirtualHandComponent::FImpl
{
/************************
* Static methods
************************/
FORCEINLINE static const FString& GetDefaultLeftHandMeshPath()
{
static const FString Path{TEXT("SkeletalMesh'/SenseGlove/Meshes/"
"SK_SenseGlove_VirtualHand_Left.SK_SenseGlove_VirtualHand_Left'")};
return Path;
}
FORCEINLINE static const FString& GetDefaultLeftHandMeshPathOnly()
{
static const FString Path{TEXT("/SenseGlove/Meshes/"
"SK_SenseGlove_VirtualHand_Left.SK_SenseGlove_VirtualHand_Left")};
return Path;
}
FORCEINLINE static const FString& GetDefaultRightHandMeshPath()
{
static const FString Path{TEXT("SkeletalMesh'/SenseGlove/Meshes/"
"SK_SenseGlove_VirtualHand_Right.SK_SenseGlove_VirtualHand_Right'")};
return Path;
}
FORCEINLINE static const FString& GetDefaultRightHandMeshPathOnly()
{
static const FString Path{TEXT("/SenseGlove/Meshes/"
"SK_SenseGlove_VirtualHand_Right.SK_SenseGlove_VirtualHand_Right")};
return Path;
}
/************************
* Owner object
************************/
USGVirtualHandComponent* Owner;
/************************
* Constructor / Destructor
************************/
explicit FImpl(USGVirtualHandComponent* InOwner);
~FImpl();
/************************
* Default copy constructor & copy assignment operator
************************/
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
bool IsEditor() const;
FString GetDefaultMeshPath() const;
bool IsUsingUserMesh() const;
USkeletalMesh* LoadDefaultMesh() const;
void SetDefaultMesh() const;
USkeletalMesh* GetMesh() const;
USkeleton* GetSkeleton() const;
const FReferenceSkeleton& GetRefSkeleton() const;
bool InitializeBackend() const;
bool UninitializeBackend() const;
bool CheckGlove() const;
void SetVisibility(bool bInVisible) const;
void DrawDebugVirtualHand() const;
};
const TArray<TArray<FName>>& USGVirtualHandComponent::GetLeftHandFingerBoneNames()
{
static const TArray<TArray<FName>> BoneNames{
{FName(TEXT("thumb_01_l")), FName(TEXT("thumb_02_l")), FName(TEXT("thumb_03_l"))},
{FName(TEXT("index_01_l")), FName(TEXT("index_02_l")), FName(TEXT("index_03_l"))},
{FName(TEXT("middle_01_l")), FName(TEXT("middle_02_l")), FName(TEXT("middle_03_l"))},
{FName(TEXT("ring_01_l")), FName(TEXT("ring_02_l")), FName(TEXT("ring_03_l"))},
{FName(TEXT("pinky_01_l")), FName(TEXT("pinky_02_l")), FName(TEXT("pinky_03_l"))},
};
return BoneNames;
}
const TArray<TArray<FName>>& USGVirtualHandComponent::GetRightHandFingerBoneNames()
{
static const TArray<TArray<FName>> BoneNames{
{FName(TEXT("thumb_01_r")), FName(TEXT("thumb_02_r")), FName(TEXT("thumb_03_r"))},
{FName(TEXT("index_01_r")), FName(TEXT("index_02_r")), FName(TEXT("index_03_r"))},
{FName(TEXT("middle_01_r")), FName(TEXT("middle_02_r")), FName(TEXT("middle_03_r"))},
{FName(TEXT("ring_01_r")), FName(TEXT("ring_02_r")), FName(TEXT("ring_03_r"))},
{FName(TEXT("pinky_01_r")), FName(TEXT("pinky_02_r")), FName(TEXT("pinky_03_r"))},
};
return BoneNames;
}
const FName& USGVirtualHandComponent::GetLeftHandFingerBoneName(const int32 Finger, const int32 Joint)
{
const TArray<TArray<FName>>& BoneNames{GetLeftHandFingerBoneNames()};
ensureAlwaysMsgf(Finger < BoneNames.Num(), TEXT("Finger index is out of bound!"));
ensureAlwaysMsgf(Joint < BoneNames[Finger].Num(), TEXT("Joint index is out of bound!"));
const FName& BoneName{BoneNames[Finger][Joint]};
return BoneName;
}
const FName& USGVirtualHandComponent::GetRightHandFingerBoneName(const int32 Finger, const int32 Joint)
{
const TArray<TArray<FName>>& BoneNames{GetRightHandFingerBoneNames()};
ensureAlwaysMsgf(Finger < BoneNames.Num(), TEXT("Finger index is out of bound!"));
ensureAlwaysMsgf(Joint < BoneNames[Finger].Num(), TEXT("Joint index is out of bound!"));
const FName& BoneName{BoneNames[Finger][Joint]};
return BoneName;
}
USGVirtualHandComponent::USGVirtualHandComponent(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer),
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
PrimaryComponentTick.bTickEvenWhenPaused = false;
PrimaryComponentTick.bCanEverTick = true;
PrimaryComponentTick.bStartWithTickEnabled = true;
bTickInEditor = true;
bNeverNeedsRenderUpdate = false;
bAllowConcurrentTick = true;
SetUpdateAnimationInEditor(true);
SetCastShadow(true);
SetCastHiddenShadow(false);
bCastDynamicShadow = true;
SetOnlyOwnerSee(false);
SetReceivesDecals(true);
SetCanEverAffectNavigation(false);
Super::SetCollisionObjectType(ECC_WorldDynamic);
Super::SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);
Super::SetCollisionResponseToAllChannels(ECR_Overlap);
Super::SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Block);
Super::SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Block);
Super::SetCollisionResponseToChannel(ECC_Pawn, ECR_Block);
Super::SetCollisionResponseToChannel(ECC_Visibility, ECR_Block);
Super::SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Block);
Super::SetCollisionResponseToChannel(ECC_Vehicle, ECR_Block);
Super::SetCollisionResponseToChannel(ECC_Destructible, ECR_Block);
Super::SetAnimClass(USGVirtualHandAnimInstance::StaticClass());
bRight = true;
bHiddenInGameIfNoGloveDetected = false;
DebugVirtualHandSettings = FSGDebugVirtualHandSettings{
ESGDebugVirtualHandDrawingMode::None,
FVector(0.5f, 0.5f, 0.5f),
FColor(255, 0, 0, 255),
0.1f, 1.0f, 1.0f,
FColor(255, 0, 0, 255),
FColor(0, 255, 0, 255),
FColor(0, 0, 255, 255),
false, 1.1f, 0
};
Super::SetSkeletalMesh(nullptr, true);
bBackendInitialized = false;
Glove = nullptr;
WristTracker = nullptr;
}
void USGVirtualHandComponent::SetRight(const bool bInRight)
{
bRight = bInRight;
if (!Pimpl->IsUsingUserMesh())
{
Pimpl->SetDefaultMesh();
}
}
void USGVirtualHandComponent::SetAnimClass(UClass* NewClass)
{
ensureAlwaysMsgf(Cast<USGVirtualHandAnimInstance>(NewClass),
TEXT("The AnimInstance class must be a subclass of USGVirtualHandAnimInstance!"));
Super::SetAnimClass(NewClass);
}
void USGVirtualHandComponent::PostInitProperties()
{
Super::PostInitProperties();
if (!Pimpl->IsUsingUserMesh())
{
Pimpl->SetDefaultMesh();
}
}
#if WITH_EDITOR
void USGVirtualHandComponent::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent)
{
Super::PostEditChangeProperty(PropertyChangedEvent);
const FName PropertyName{
PropertyChangedEvent.Property
? PropertyChangedEvent.Property->GetFName()
: NAME_None
};
if (PropertyName == GET_MEMBER_NAME_CHECKED(USGVirtualHandComponent, bRight))
{
if (!Pimpl->IsUsingUserMesh())
{
Pimpl->SetDefaultMesh();
}
}
}
#endif /* WITH_EDITOR */
void USGVirtualHandComponent::InitializeComponent()
{
Super::InitializeComponent();
if (!Pimpl->IsUsingUserMesh())
{
Pimpl->SetDefaultMesh();
}
if (Pimpl->InitializeBackend())
{
(void) Pimpl->CheckGlove();
}
}
void USGVirtualHandComponent::UninitializeComponent()
{
Super::UninitializeComponent();
(void) Pimpl->UninitializeBackend();
}
void USGVirtualHandComponent::BeginPlay()
{
Super::BeginPlay();
if (Pimpl->InitializeBackend())
{
(void) Pimpl->CheckGlove();
}
}
void USGVirtualHandComponent::EndPlay(const EEndPlayReason::Type EndPlayReason)
{
Super::EndPlay(EndPlayReason);
(void) Pimpl->UninitializeBackend();
}
void USGVirtualHandComponent::TickComponent(
const float DeltaTime, const ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
#if WITH_EDITOR
if (Pimpl->IsEditor())
{
EditorTick(DeltaTime, TickType, ThisTickFunction);
return;
}
#endif /* WITH_EDITOR */
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
(void) Pimpl->CheckGlove();
if (IsValid(Glove) && DebugVirtualHandSettings.DrawingMode != ESGDebugVirtualHandDrawingMode::None)
{
Pimpl->DrawDebugVirtualHand();
}
}
void USGVirtualHandComponent::SetSkeletalMesh(USkeletalMesh* NewMesh, const bool bReinitPose)
{
if (IsValid(NewMesh))
{
Super::SetSkeletalMesh(NewMesh, bReinitPose);
}
else
{
Super::SetSkeletalMesh(Pimpl->LoadDefaultMesh(), bReinitPose);
}
}
void USGVirtualHandComponent::EditorTick(
const float DeltaTime, const ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
(void) Pimpl->CheckGlove();
if (IsValid(Glove) && DebugVirtualHandSettings.DrawingMode != ESGDebugVirtualHandDrawingMode::None)
{
Pimpl->DrawDebugVirtualHand();
}
}
bool USGVirtualHandComponent::IsGloveConnected() const
{
return Pimpl->CheckGlove();
}
USGHandPose* USGVirtualHandComponent::GetHandPose()
{
USGHandPose* HandPose{nullptr};
if (IsValid(Glove))
{
#if ! PLATFORM_ANDROID
Glove->GetHandPose(this, HandPose);
#else /* ! PLATFORM_ANDROID */
const UWorld* World{GetWorld()};
const float DeltaTime = UGameplayStatics::GetWorldDeltaSeconds(World);
Glove->GetHandPose(this, DeltaTime, HandPose);
#endif /* ! PLATFORM_ANDROID */
}
return HandPose;
}
const FName& USGVirtualHandComponent::GetFingerBoneName(const int32 Finger, const int32 Joint) const
{
const FName& Name{
IsRight()
? GetRightHandFingerBoneName(Finger, Joint)
: GetLeftHandFingerBoneName(Finger, Joint)
};
return Name;
}
const FTransform& USGVirtualHandComponent::GetFingerBoneRefTransform(const int32 Finger, const int32 Joint) const
{
const FName& BoneName{GetFingerBoneName(Finger, Joint)};
const FReferenceSkeleton& ReferenceSkeleton{Pimpl->GetRefSkeleton()};
const int32 BoneIndex = ReferenceSkeleton.FindBoneIndex(BoneName);
if (BoneIndex == INDEX_NONE)
{
SGLOG_WARNING(FString::Printf(TEXT("Could not find a bone index for '%s' finger bone!"),
*BoneName.ToString()));
return FTransform::Identity;
}
const FTransform& BoneTransform{ReferenceSkeleton.GetRefBonePose()[BoneIndex]};
return BoneTransform;
}
FRotator USGVirtualHandComponent::GetFingerBoneRefRotation(const int32 Finger, const int32 Joint) const
{
const FTransform BoneTransform{GetFingerBoneRefTransform(Finger, Joint)};
FRotator BoneRotation{BoneTransform.GetRotation().Rotator()};
return MoveTemp(BoneRotation);
}
TMap<FName, FRotator> USGVirtualHandComponent::GetFingersBonesRotations()
{
TMap<FName, FRotator> Rotations;
if (!IsGloveConnected())
{
return MoveTemp(Rotations);
}
const USGHandPose* HandPose = GetHandPose();
if (!IsValid(HandPose))
{
return MoveTemp(Rotations);
}
const TArray<TArray<FVector>> HandAngles{HandPose->GetHandAngles()};
for (int32 FingerIndex = 0; FingerIndex < HandAngles.Num(); ++FingerIndex)
{
const TArray<FVector>& FingerJointAngles{HandAngles[FingerIndex]};
for (int32 JointIndex = 0; JointIndex < FingerJointAngles.Num(); ++JointIndex)
{
const FVector& JointAngle{FingerJointAngles[JointIndex]};
const FQuat JointRotation{FQuat::MakeFromEuler(JointAngle)};
const FTransform& BoneRefTransform{GetFingerBoneRefTransform(FingerIndex, JointIndex)};
FQuat NewBoneRotation{BoneRefTransform.GetRotation() * JointRotation};
FName BoneName{GetFingerBoneName(FingerIndex, JointIndex)};
Rotations.Emplace(MoveTemp(BoneName), MoveTemp(NewBoneRotation));
}
}
return MoveTemp(Rotations);
}
USGVirtualHandComponent::FImpl::FImpl(USGVirtualHandComponent* InOwner)
: Owner(InOwner)
{
}
USGVirtualHandComponent::FImpl::~FImpl() = default;
bool USGVirtualHandComponent::FImpl::IsEditor() const
{
const UWorld* World{Owner->GetWorld()};
if (World && (World->WorldType == EWorldType::Editor || World->WorldType == EWorldType::EditorPreview))
{
return true;
}
return false;
}
FString USGVirtualHandComponent::FImpl::GetDefaultMeshPath() const
{
FString SkeletalMeshPath;
if (Owner->IsRight())
{
SkeletalMeshPath = GetDefaultRightHandMeshPath();
}
else
{
SkeletalMeshPath = GetDefaultLeftHandMeshPath();
}
return MoveTemp(SkeletalMeshPath);
}
bool USGVirtualHandComponent::FImpl::IsUsingUserMesh() const
{
const USkeletalMesh* CurrentMesh{GetMesh()};
if (!IsValid(CurrentMesh))
{
return false;
}
const FString CurrentMeshPath(CurrentMesh->GetPathName());
const FString LeftHandDefaultMeshPath(GetDefaultLeftHandMeshPath());
const FString LeftHandDefaultMeshPathOnly(GetDefaultLeftHandMeshPathOnly());
const FString RightHandDefaultMeshPath(GetDefaultRightHandMeshPath());
const FString RightHandDefaultMeshPathOnly(GetDefaultRightHandMeshPathOnly());
if (CurrentMeshPath == LeftHandDefaultMeshPath
|| CurrentMeshPath == LeftHandDefaultMeshPathOnly
|| CurrentMeshPath == RightHandDefaultMeshPath
|| CurrentMeshPath == RightHandDefaultMeshPathOnly)
{
return false;
}
return true;
}
USkeletalMesh* USGVirtualHandComponent::FImpl::LoadDefaultMesh() const
{
const FString DefaultMeshPath{GetDefaultMeshPath()};
USkeletalMesh* DefaultMesh{
Cast<USkeletalMesh>(StaticLoadObject(USkeletalMesh::StaticClass(), nullptr, *DefaultMeshPath))
};
if (!IsValid(DefaultMesh))
{
SGLOG_WARNING(FString::Printf(TEXT("Failed to load the default skeletal mesh: '%s'"), *DefaultMeshPath));
}
return DefaultMesh;
}
void USGVirtualHandComponent::FImpl::SetDefaultMesh() const
{
Owner->SetSkeletalMesh(LoadDefaultMesh(), true);
}
USkeletalMesh* USGVirtualHandComponent::FImpl::GetMesh() const
{
return Owner->
#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 1
GetSkeletalMeshAsset()
#else /* ENGINE_MAJOR_VERSION == 5 && ENGINE_MINOR_VERSION >= 1 */
SkeletalMesh
#endif /* ENGINE_MAJOR_VERSION == 5 && ENGINE_MINOR_VERSION >= 1 */
;
}
USkeleton* USGVirtualHandComponent::FImpl::GetSkeleton() const
{
USkeletalMesh* Mesh{GetMesh()};
ensureAlwaysMsgf(IsValid(Mesh), TEXT("Invalid SkeletalMesh object!"));
return Mesh->GetSkeleton();
}
const FReferenceSkeleton& USGVirtualHandComponent::FImpl::GetRefSkeleton() const
{
const USkeletalMesh* Mesh{GetMesh()};
ensureAlwaysMsgf(IsValid(Mesh), TEXT("Invalid SkeletalMesh object!"));
return Mesh->GetRefSkeleton();
}
bool USGVirtualHandComponent::FImpl::InitializeBackend() const
{
if (!Owner->bBackendInitialized)
{
#if PLATFORM_ANDROID
const int32_t Result = FSGConnect::Init();
switch (Result)
{
case -3:
SGLOG_ERROR("An Unexpected error occurred. Please try again.");
return false;
case -2:
SGLOG_ERROR("Device Scanning is already running within a different program.");
return false;
case -1:
SGLOG_ERROR("Device Scanning already being initialized (function called twice in short succession).");
return false;
case 0:
// Do not pollute the logs!
//SGLOG_ERROR("Device Scanning is already running within this program.");
// We must return here in case there are two virtual hand components are present in the scene.
return true;
case 1:
SGLOG("Successfully started up DeviceScanning from the current program.");
break;
default:
ensureAlwaysMsgf(false, TEXT("Unhandled Init return status code!"));
return false;
}
#endif /* PLATFORM_ANDROID */
// Ensure that the device list is empty before doing anything.
FSGDeviceList::Dispose();
FSGDeviceList::Reinitialize();
// Load the latest hand profiles.
FSGHapticGloveHandProfiles::TryLoadingFromDisk();
Owner->bBackendInitialized = true;
return true;
}
return false;
}
bool USGVirtualHandComponent::FImpl::UninitializeBackend() const
{
// NOTE
// In Editor builds we should be avoiding dispose, since stopping the game in PIE mode, causes the virtual-hand
// to disappear in the editor as the plugin won't be able to retrieve the glove status anymore.
#if ! WITH_EDITOR
if (Owner->bBackendInitialized)
{
FSGDeviceList::Dispose();
#if PLATFORM_ANDROID
const int32_t Result = FSGConnect::Dispose();
switch (Result)
{
case -3:
SGLOG_ERROR("An Unexpected error occurred. Please try again.");
return false;
case -2:
SGLOG_ERROR("Not allowed to dispose of Device Scanning because this is not the program which started it.");
return false;
case -1:
SGLOG_ERROR("Device Scanning is currently being disposed off. This takes a second or two. (function called twice in short succession).");
return false;
case 0:
SGLOG_ERROR("There is no deviceScanner running from any program, so disposing is skipped.");
return false;
case 1:
SGLOG("Successfully disposed of DeviceScanner resources.");
break;
default:
ensureAlwaysMsgf(false, TEXT("Unhandled Dispose return status code!"));
return false;
}
#endif /* PLATFORM_ANDROID */
Owner->bBackendInitialized = false;
return true;
}
#endif /* ! WITH_EDITOR */
return false;
}
bool USGVirtualHandComponent::FImpl::CheckGlove() const
{
if (!Owner->bBackendInitialized)
{
const bool bSucceeded = InitializeBackend();
if (!bSucceeded)
{
return false;
}
}
const bool bGloveWasPresent = IsValid(Owner->Glove);
const bool bFoundGlove = USGHapticGlove::GetGlove(Owner, Owner->IsRight(), Owner->Glove);
if (!bFoundGlove && bGloveWasPresent)
{
SGLOG_ERROR(FString::Printf(TEXT("Could not find a %s glove!"),
(Owner->IsRight() ? TEXT("right-handed") : TEXT("left-handed"))));
}
const bool bIsEditor = IsEditor();
if (!bIsEditor)
{
const bool bIsVisible = Owner->IsVisible();
if (Owner->bHiddenInGameIfNoGloveDetected)
{
if (bFoundGlove)
{
if (!bIsVisible)
{
SetVisibility(true);
}
}
else
{
if (bIsVisible)
{
SetVisibility(false);
}
}
}
else
{
if (!bIsVisible)
{
SetVisibility(true);
}
}
}
return bFoundGlove;
}
void USGVirtualHandComponent::FImpl::SetVisibility(const bool bInVisible) const
{
Owner->SetVisibility(bInVisible, true);
}
void USGVirtualHandComponent::FImpl::DrawDebugVirtualHand() const
{
const UWorld* World{Owner->GetWorld()};
if (!IsValid(Owner->WristTracker))
{
return;
}
const FVector& WristLocation{Owner->WristTracker->GetWristLocation()};
const FRotator& WristRotation{Owner->WristTracker->GetWristRotation()};
const USGHandPose* HandPose{Owner->GetHandPose()};
if (!IsValid(HandPose))
{
return;
}
const TArray<TArray<FVector>>& JointPositions{HandPose->GetJointPositions()};
const TArray<TArray<FRotator>>& JointRotations{HandPose->GetJointRotations()};
FSGDebugVirtualHand::Draw(World, WristLocation, WristRotation, JointPositions, JointRotations,
Owner->DebugVirtualHandSettings);
}
void USGVirtualHandComponent::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
@@ -0,0 +1,549 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
#include "SenseGlove/Components/SGWristTrackerComponent.h"
#include "Animation/Skeleton.h"
#include "Components/SkeletalMeshComponent.h"
#include "Engine/SkeletalMesh.h"
#include "UObject/ConstructorHelpers.h"
#include "SGConnect/SGConnect.h"
#include "SGCore/SGDeviceList.h"
#include "SGCore/SGHapticGlove.h"
#include "SGCore/SGHapticGloveHandProfiles.h"
#include "SGDebug/SGDebugGizmo.h"
#include "SGLog/SGLog.h"
#include "SGSettings/SGSettings.h"
struct USGWristTrackerComponent::FImpl
{
/************************
* Static methods
************************/
/************************
* Owner object
************************/
USGWristTrackerComponent* Owner;
/************************
* Constructor / Destructor
************************/
explicit FImpl(USGWristTrackerComponent* InOwner);
~FImpl();
/************************
* Default copy constructor & copy assignment operator
************************/
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
bool IsEditor() const;
bool InitializeBackend() const;
bool UninitializeBackend() const;
bool CheckGlove() const;
void UpdateWristTrackingData() const;
void DrawDebugGizmo();
};
USGWristTrackerComponent::USGWristTrackerComponent(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer),
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
PrimaryComponentTick.bTickEvenWhenPaused = false;
PrimaryComponentTick.bCanEverTick = true;
PrimaryComponentTick.bStartWithTickEnabled = true;
bTickInEditor = true;
bNeverNeedsRenderUpdate = true;
bAllowConcurrentTick = true;
SetCastShadow(false);
SetCastHiddenShadow(false);
bCastDynamicShadow = false;
SetOnlyOwnerSee(false);
SetReceivesDecals(false);
SetCanEverAffectNavigation(false);
SetRight(true);
bOverridePluginWristTrackingSettings = false;
bDrawWristTrackerDebugGizmo = false;
TrackingHardware = ESGPositionalTrackingHardware::None;
TrackingHardwareLocationOffset = FVector::ZeroVector;
TrackingHardwareLocationOffset = FVector::ZeroVector;
bOverridePluginWristTrackingDebugSettings = false;
bDrawWristTrackerDebugGizmo = false;
WristTrackerDebugGizmoSettings = FSGDebugGizmoSettings(
4.0f, 1.0f,
FColor(255, 0, 0, 255),
FColor(0, 255, 0, 255),
FColor(0, 0, 255, 255),
false, 1.1f, 0
);
bDrawWristTrackerDebugGizmo = false;
bBackendInitialized = false;
Glove = nullptr;
WristLocation = FVector::ZeroVector;
WristRotation = FRotator::ZeroRotator;
}
void USGWristTrackerComponent::SetRight(const bool bRight)
{
SetTrackingSource(bRight ? EControllerHand::Right : EControllerHand::Left);
}
ESGPositionalTrackingHardware USGWristTrackerComponent::GetTrackingHardware() const
{
if (OverridesPluginWristTrackingSettings())
{
return TrackingHardware;
}
return USGSettings::GetInstance()->GetTrackingHardware();
}
void USGWristTrackerComponent::SetTrackingHardware(const ESGPositionalTrackingHardware InTrackingHardware)
{
ensureAlwaysMsgf(
OverridesPluginWristTrackingSettings(),
TEXT( "Setting TrackingHardware is only permitted when bOverridePluginWristTrackingSettings is enabled!"));
TrackingHardware = InTrackingHardware;
}
const FVector& USGWristTrackerComponent::GetTrackingHardwareLocationOffset() const
{
ensureAlwaysMsgf(
GetTrackingHardware() == ESGPositionalTrackingHardware::Custom,
TEXT( "Getting TrackingHardwareLocationOffset is only permitted when TrackingHardware is set to Custom!"));
if (OverridesPluginWristTrackingSettings())
{
return TrackingHardwareLocationOffset;
}
return IsRight()
? USGSettings::GetInstance()->GetTrackingHardwareLocationOffsetRightHand()
: USGSettings::GetInstance()->GetTrackingHardwareLocationOffsetLeftHand();
}
void USGWristTrackerComponent::SetTrackingHardwareLocationOffset(const FVector& InTrackingHardwareLocationOffset)
{
ensureAlwaysMsgf(
OverridesPluginWristTrackingSettings(),
TEXT(
"Setting TrackingHardwareLocationOffset is only permitted when bOverridePluginWristTrackingSettings is enabled!"
));
ensureAlwaysMsgf(
GetTrackingHardware() == ESGPositionalTrackingHardware::Custom,
TEXT( "Setting TrackingHardwareLocationOffset is only permitted when TrackingHardware is set to Custom!"));
TrackingHardwareLocationOffset = InTrackingHardwareLocationOffset;
}
const FRotator& USGWristTrackerComponent::GetTrackingHardwareRotationOffset() const
{
ensureAlwaysMsgf(
GetTrackingHardware() == ESGPositionalTrackingHardware::Custom,
TEXT( "Getting TrackingHardwareRotationOffset is only permitted when TrackingHardware is set to Custom!"));
if (OverridesPluginWristTrackingSettings())
{
return TrackingHardwareRotationOffset;
}
return IsRight()
? USGSettings::GetInstance()->GetTrackingHardwareRotationOffsetRightHand()
: USGSettings::GetInstance()->GetTrackingHardwareRotationOffsetLeftHand();
}
void USGWristTrackerComponent::SetTrackingHardwareRotationOffset(const FRotator& InTrackingHardwareRotationOffset)
{
ensureAlwaysMsgf(
OverridesPluginWristTrackingSettings(),
TEXT(
"Setting TrackingHardwareRotationOffset is only permitted when bOverridePluginWristTrackingSettings is enabled!"
));
ensureAlwaysMsgf(
GetTrackingHardware() == ESGPositionalTrackingHardware::Custom,
TEXT("Setting TrackingHardwareRotationOffsetRightHand is only permitted when TrackingHardware is set to Custom!"
));
TrackingHardwareRotationOffset = InTrackingHardwareRotationOffset;
}
bool USGWristTrackerComponent::GetDrawWristTrackerDebugGizmo() const
{
if (OverridesPluginWristTrackingDebugSettings())
{
return !!bDrawWristTrackerDebugGizmo;
}
return USGSettings::GetInstance()->GetDrawWristTrackerDebugGizmo();
}
void USGWristTrackerComponent::SetDrawWristTrackerDebugGizmo(const bool bInDrawWristTrackerDebugGizmo)
{
ensureAlwaysMsgf(
OverridesPluginWristTrackingDebugSettings(),
TEXT( "Setting bDrawWristTrackerDebugGizmo is only permitted when bOverridePluginWristTrackingDebugSettings is"
" enabled!"));
bDrawWristTrackerDebugGizmo = bInDrawWristTrackerDebugGizmo;
}
const FSGDebugGizmoSettings& USGWristTrackerComponent::GetWristTrackerDebugGizmoSettings() const
{
ensureAlwaysMsgf(
GetDrawWristTrackerDebugGizmo(),
TEXT("Getting WristTrackerDebugGizmoLength is only permitted when bDrawWristTrackerDebugGizmo is enabled!"));
if (OverridesPluginWristTrackingDebugSettings())
{
return WristTrackerDebugGizmoSettings;
}
return USGSettings::GetInstance()->GetWristTrackerDebugGizmoSettings();
}
void USGWristTrackerComponent::SetWristTrackerDebugGizmoSettings(
const FSGDebugGizmoSettings& InWristTrackerDebugGizmoSettings)
{
ensureAlwaysMsgf(
OverridesPluginWristTrackingDebugSettings(),
TEXT("Setting WristTrackerDebugGizmoLength is only permitted when bOverridePluginWristTrackingDebugSettings is"
" enabled!"));
ensureAlwaysMsgf(
GetDrawWristTrackerDebugGizmo(),
TEXT("Setting WristTrackerDebugGizmoLength is only permitted when bDrawWristTrackerDebugGizmo is enabled!"));
WristTrackerDebugGizmoSettings = InWristTrackerDebugGizmoSettings;
}
#if WITH_EDITOR
void USGWristTrackerComponent::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent)
{
Super::PostEditChangeProperty(PropertyChangedEvent);
const FName PropertyName{
PropertyChangedEvent.Property
? PropertyChangedEvent.Property->GetFName()
: NAME_None
};
(void) PropertyName;
}
#endif /* WITH_EDITOR */
void USGWristTrackerComponent::InitializeComponent()
{
Super::InitializeComponent();
if (Pimpl->InitializeBackend())
{
(void) Pimpl->CheckGlove();
}
}
void USGWristTrackerComponent::UninitializeComponent()
{
Super::UninitializeComponent();
(void) Pimpl->UninitializeBackend();
}
void USGWristTrackerComponent::BeginPlay()
{
Super::BeginPlay();
if (Pimpl->InitializeBackend())
{
(void) Pimpl->CheckGlove();
}
}
void USGWristTrackerComponent::EndPlay(const EEndPlayReason::Type EndPlayReason)
{
Super::EndPlay(EndPlayReason);
(void) Pimpl->UninitializeBackend();
}
void USGWristTrackerComponent::TickComponent(
const float DeltaTime, const ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
#if WITH_EDITOR
if (Pimpl->IsEditor())
{
EditorTick(DeltaTime, TickType, ThisTickFunction);
return;
}
#endif /* WITH_EDITOR */
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
if (GetDrawWristTrackerDebugGizmo())
{
Pimpl->DrawDebugGizmo();
}
(void) Pimpl->CheckGlove();
}
void USGWristTrackerComponent::EditorTick(
const float DeltaTime, const ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
(void) Pimpl->CheckGlove();
}
USGWristTrackerComponent::FImpl::FImpl(USGWristTrackerComponent* InOwner)
: Owner(InOwner)
{
}
USGWristTrackerComponent::FImpl::~FImpl() = default;
bool USGWristTrackerComponent::FImpl::IsEditor() const
{
const UWorld* World{Owner->GetWorld()};
if (World && (World->WorldType == EWorldType::Editor || World->WorldType == EWorldType::EditorPreview))
{
return true;
}
return false;
}
bool USGWristTrackerComponent::FImpl::InitializeBackend() const
{
if (!Owner->bBackendInitialized)
{
#if PLATFORM_ANDROID
const int32_t Result = FSGConnect::Init();
switch (Result)
{
case -3:
SGLOG_ERROR("An Unexpected error occurred. Please try again.");
return false;
case -2:
SGLOG_ERROR("Device Scanning is already running within a different program.");
return false;
case -1:
SGLOG_ERROR("Device Scanning already being initialized (function called twice in short succession).");
return false;
case 0:
// Do not pollute the logs!
//SGLOG_ERROR("Device Scanning is already running within this program.");
// We must return here in case two virtual hand components are present in the scene.
return true;
case 1:
SGLOG("Successfully started up DeviceScanning from the current program.");
break;
default:
ensureAlwaysMsgf(false, TEXT("Unhandled Init return status code!"));
return false;
}
#endif /* PLATFORM_ANDROID */
// Ensure that the device list is empty before doing anything.
FSGDeviceList::Dispose();
FSGDeviceList::Reinitialize();
// Load the latest hand profiles.
FSGHapticGloveHandProfiles::TryLoadingFromDisk();
Owner->bBackendInitialized = true;
return true;
}
return false;
}
bool USGWristTrackerComponent::FImpl::UninitializeBackend() const
{
// NOTE
// In Editor builds we should be avoiding dispose, since stopping the game in PIE mode, causes the virtual-hand
// to disappear in the editor as the plugin won't be able to retrieve the glove status anymore.
#if ! WITH_EDITOR
if (Owner->bBackendInitialized)
{
FSGDeviceList::Dispose();
#if PLATFORM_ANDROID
const int32_t Result = FSGConnect::Dispose();
switch (Result)
{
case -3:
SGLOG_ERROR("An Unexpected error occurred. Please try again.");
return false;
case -2:
SGLOG_ERROR("Not allowed to dispose of Device Scanning because this is not the program which started it.");
return false;
case -1:
SGLOG_ERROR("Device Scanning is currently being disposed off. This takes a second or two. (function called twice in short succession).");
return false;
case 0:
SGLOG_ERROR("There is no deviceScanner running from any program, so disposing is skipped.");
return false;
case 1:
SGLOG("Successfully disposed of DeviceScanner resources.");
break;
default:
ensureAlwaysMsgf(false, TEXT("Unhandled Dispose return status code!"));
return false;
}
#endif /* PLATFORM_ANDROID */
Owner->bBackendInitialized = false;
return true;
}
#endif /* ! WITH_EDITOR */
return false;
}
bool USGWristTrackerComponent::FImpl::CheckGlove() const
{
if (!Owner->bBackendInitialized)
{
const bool bSucceeded = InitializeBackend();
if (!bSucceeded)
{
return false;
}
}
const bool bGloveWasPresent = IsValid(Owner->Glove);
const bool bFoundGlove = USGHapticGlove::GetGlove(Owner, Owner->IsRight(), Owner->Glove);
if (!bFoundGlove && bGloveWasPresent)
{
SGLOG_ERROR(FString::Printf(TEXT("Could not find a %s glove!"),
(Owner->IsRight() ? TEXT("right-handed") : TEXT("left-handed"))));
}
if (bFoundGlove)
{
UpdateWristTrackingData();
}
return bFoundGlove;
}
void USGWristTrackerComponent::FImpl::UpdateWristTrackingData() const
{
ensureAlwaysMsgf(Owner->Glove, TEXT("Invalid Glove!"));
FVector TrackerLocation{Owner->GetComponentLocation()};
FRotator TrackerRotation{Owner->GetComponentRotation()};
ESGPositionalTrackingHardware TrackerHardware = Owner->GetTrackingHardware();
if (TrackerHardware == ESGPositionalTrackingHardware::None)
{
TrackerHardware = ESGPositionalTrackingHardware::Custom;
}
else if (TrackerHardware == ESGPositionalTrackingHardware::Custom)
{
TrackerLocation += Owner->GetTrackingHardwareLocationOffset();
TrackerRotation += Owner->GetTrackingHardwareRotationOffset();
}
FVector NewWristLocation;
FRotator NewWristRotation;
Owner->Glove->GetWristLocation(TrackerLocation, TrackerRotation, TrackerHardware,
NewWristLocation, NewWristRotation);
const bool bLocationUpdated = !Owner->WristLocation.Equals(NewWristLocation, SMALL_NUMBER);
const bool bRotationUpdated = !Owner->WristRotation.Equals(NewWristRotation, SMALL_NUMBER);
if (bLocationUpdated)
{
Owner->WristLocation = MoveTemp(NewWristLocation);
}
if (bRotationUpdated)
{
Owner->WristRotation = MoveTemp(NewWristRotation);
}
if (bLocationUpdated && Owner->WristLocationChangedEvent.IsBound())
{
Owner->WristLocationChangedEvent.Broadcast(Owner->WristLocation);
}
if (bRotationUpdated && Owner->WristRotationChangedEvent.IsBound())
{
Owner->WristRotationChangedEvent.Broadcast(Owner->WristRotation);
}
if ((bLocationUpdated && bRotationUpdated) && Owner->WristLocationAndRotationChangedEvent.IsBound())
{
Owner->WristLocationAndRotationChangedEvent.Broadcast(Owner->WristLocation, Owner->WristRotation);
}
}
void USGWristTrackerComponent::FImpl::DrawDebugGizmo()
{
const UWorld* World{Owner->GetWorld()};
const FVector& Location{Owner->GetComponentLocation()};
const FRotator& Rotation{Owner->GetComponentRotation()};
const FSGDebugGizmoSettings& DebugGizmoSettings{Owner->GetWristTrackerDebugGizmoSettings()};
FSGDebugGizmo::Draw(World, Location, Rotation, DebugGizmoSettings);
//FSGDebugGizmo::Draw(World, Owner->WristLocation, Owner->WristRotation, DebugGizmoSettings);
}
void USGWristTrackerComponent::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
@@ -0,0 +1,46 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
#include "SenseGlove/GameFramework//SGGameModeBase.h"
#include "SenseGlove/GameFramework/SGPawn.h"
#include "SenseGlove/GameFramework/SGPlayerController.h"
ASGGameModeBase::ASGGameModeBase(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
DefaultPawnClass = ASGPawn::StaticClass();
PlayerControllerClass = ASGPlayerController::StaticClass();
}
@@ -0,0 +1,168 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
#include "SenseGlove/GameFramework/SGPawn.h"
#include "Camera/CameraComponent.h"
#include "SenseGlove/Components/SGVirtualHandComponent.h"
#include "SenseGlove/Components/SGWristTrackerComponent.h"
struct ASGPawn::FImpl
{
/************************
* Static methods
************************/
/************************
* Owner object
************************/
ASGPawn* Owner;
/************************
* Constructor / Destructor
************************/
explicit FImpl(ASGPawn* InOwner);
~FImpl();
/************************
* Default copy constructor & copy assignment operator
************************/
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
};
ASGPawn::ASGPawn(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer),
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
PrimaryActorTick.bCanEverTick = true;
SceneRoot = ObjectInitializer.CreateDefaultSubobject<USceneComponent>(this, TEXT("SceneRoot"));
SetRootComponent(SceneRoot);
Camera = ObjectInitializer.CreateDefaultSubobject<UCameraComponent>(this, TEXT("Camera"));
Camera->SetupAttachment(GetRootComponent());
Camera->SetCanEverAffectNavigation(false);
WristTrackerLeft = ObjectInitializer.CreateDefaultSubobject<USGWristTrackerComponent>(
this, TEXT("WristTrackerLeft"));
WristTrackerLeft->SetupAttachment(GetRootComponent());
WristTrackerLeft->SetRight(false);
HandLeft = ObjectInitializer.CreateDefaultSubobject<USGVirtualHandComponent>(this, TEXT("HandLeft"));
HandLeft->SetupAttachment(GetRootComponent());
HandLeft->SetRight(false);
HandLeft->SetHiddenIfNoGloveDetected(true);
HandLeft->SetRelativeRotation(FRotator{0.0f, -90.0f, 0.0f},
false, nullptr, ETeleportType::None);
HandLeft->SetRelativeLocation(FVector{30.0f, -20.0f, -10.0f},
false, nullptr, ETeleportType::None);
HandLeft->SetWristTracker(WristTrackerLeft);
WristTrackerRight = ObjectInitializer.CreateDefaultSubobject<USGWristTrackerComponent>(
this, TEXT("WristTrackerRight"));
WristTrackerRight->SetupAttachment(GetRootComponent());
WristTrackerRight->SetRight(true);
HandRight = ObjectInitializer.CreateDefaultSubobject<USGVirtualHandComponent>(this, TEXT("HandRight"));
HandRight->SetupAttachment(GetRootComponent());
HandRight->SetRight(true);
HandRight->SetHiddenIfNoGloveDetected(true);
HandRight->SetRelativeRotation(FRotator{0.0f, -90.0f, 0.0f},
false, nullptr, ETeleportType::None);
HandRight->SetRelativeLocation(FVector{30.0f, 20.0f, -10.0f},
false, nullptr, ETeleportType::None);
HandRight->SetWristTracker(WristTrackerRight);
}
void ASGPawn::BeginPlay()
{
Super::BeginPlay();
ensureAlwaysMsgf(
WristTrackerLeft->IsLeft() && HandLeft->IsLeft(),
TEXT("The left hand and the left wrist do not track the left hand!"));
ensureAlwaysMsgf(
WristTrackerRight->IsRight() && HandRight->IsRight(),
TEXT("The right hand and the right wrist do not track the right hand!"));
WristTrackerLeft->OnWristLocationChanged().AddWeakLambda(this, [&](const FVector& Location)-> void
{
HandLeft->SetWorldLocation(Location);
});
WristTrackerLeft->OnWristRotationChanged().AddWeakLambda(this, [&](const FRotator& Rotation)-> void
{
HandLeft->SetWorldRotation(Rotation);
});
WristTrackerRight->OnWristLocationChanged().AddWeakLambda(this, [&](const FVector& Location)-> void
{
HandRight->SetWorldLocation(Location);
});
WristTrackerRight->OnWristRotationChanged().AddWeakLambda(this, [&](const FRotator& Rotation)-> void
{
HandRight->SetWorldRotation(Rotation);
});
}
void ASGPawn::PreInitializeComponents()
{
Super::PreInitializeComponents();
WristTrackerLeft->SetRight(HandLeft->IsRight());
WristTrackerRight->SetRight(HandRight->IsRight());
}
ASGPawn::FImpl::FImpl(ASGPawn* InOwner)
: Owner(InOwner)
{
}
ASGPawn::FImpl::~FImpl() = default;
void ASGPawn::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
@@ -0,0 +1,46 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
#include "SenseGlove/GameFramework/SGPlayerController.h"
ASGPlayerController::ASGPlayerController(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
}
void ASGPlayerController::SetupInputComponent()
{
Super::SetupInputComponent();
}
@@ -0,0 +1,146 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
#include "SenseGlove/GameFramework/SGVirtualHandActor.h"
#include "SenseGlove/Components/SGVirtualHandComponent.h"
#include "SenseGlove/Components/SGWristTrackerComponent.h"
struct ASGVirtualHandActor::FImpl
{
/************************
* Owner object
************************/
ASGVirtualHandActor* Owner;
/************************
* Constructor / Destructor
************************/
explicit FImpl(ASGVirtualHandActor* InOwner);
~FImpl();
/************************
* Default copy constructor & copy assignment operator
************************/
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
};
ASGVirtualHandActor::ASGVirtualHandActor(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer),
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
PrimaryActorTick.bCanEverTick = true;
SceneRoot = CreateDefaultSubobject<USceneComponent>(TEXT("SceneRoot"));
SetRootComponent(SceneRoot);
VirtualHand = CreateDefaultSubobject<USGVirtualHandComponent>(TEXT("VirtualHand"));
VirtualHand->SetupAttachment(RootComponent);
VirtualHand->SetRelativeRotation(FRotator{0.0f, -90.0f, 0.0f},
false, nullptr, ETeleportType::None);
WristTracker = CreateDefaultSubobject<USGWristTrackerComponent>(TEXT("WristTracker"));
WristTracker->SetupAttachment(RootComponent);
WristTracker->SetRight(VirtualHand->IsRight());
}
void ASGVirtualHandActor::BeginPlay()
{
Super::BeginPlay();
ensureAlwaysMsgf(
(WristTracker->IsLeft() && VirtualHand->IsLeft())
|| (WristTracker->IsRight() && VirtualHand->IsRight()),
TEXT("The virtual hand component and the wrist tracker component do not track the same hand!"));
WristTracker->OnWristLocationChanged().AddWeakLambda(this, [&](const FVector& Location)-> void
{
VirtualHand->SetWorldLocation(Location);
});
WristTracker->OnWristRotationChanged().AddWeakLambda(this, [&](const FRotator& Rotation)-> void
{
VirtualHand->SetWorldRotation(Rotation);
});
}
void ASGVirtualHandActor::PreInitializeComponents()
{
Super::PreInitializeComponents();
WristTracker->SetRight(VirtualHand->IsRight());
}
bool ASGVirtualHandActor::IsLeft() const
{
return WristTracker->IsLeft() && VirtualHand->IsLeft();
}
bool ASGVirtualHandActor::IsRight() const
{
return WristTracker->IsRight() && VirtualHand->IsRight();
}
void ASGVirtualHandActor::SetRight(const bool bRight)
{
WristTracker->SetRight(bRight);
VirtualHand->SetRight(bRight);
}
bool ASGVirtualHandActor::IsGloveConnected() const
{
return VirtualHand->IsGloveConnected();
}
ASGVirtualHandActor::FImpl::FImpl(ASGVirtualHandActor* InOwner)
: Owner(InOwner)
{
}
ASGVirtualHandActor::FImpl::~FImpl() = default;
void ASGVirtualHandActor::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
@@ -0,0 +1,51 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
#pragma once
#include "Animation/AnimInstance.h"
#include "SenseGlove/Animation/SGVirtualHandAnimInstanceProxy.h"
#include "SGVirtualHandAnimInstance.generated.h"
UCLASS(Transient, Blueprintable, BlueprintType, meta=(BlueprintThreadSafe), Within=SkeletalMeshComponent)
class SENSEGLOVE_API USGVirtualHandAnimInstance : public UAnimInstance
{
GENERATED_UCLASS_BODY()
protected:
virtual FSGVirtualHandAnimInstanceProxy* CreateAnimInstanceProxy() override;
};
@@ -0,0 +1,60 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
#pragma once
#include "Animation/AnimInstanceProxy.h"
#include "Templates/UniquePtr.h"
#include "UObject/NameTypes.h"
#include "SGVirtualHandAnimInstanceProxy.generated.h"
USTRUCT()
struct SENSEGLOVE_API FSGVirtualHandAnimInstanceProxy : public FAnimInstanceProxy
{
GENERATED_USTRUCT_BODY()
public:
TMap<FName, FRotator> BonesRotations;
public:
FSGVirtualHandAnimInstanceProxy();
FSGVirtualHandAnimInstanceProxy(UAnimInstance* Instance);
protected:
virtual void PreEvaluateAnimation(UAnimInstance* InAnimInstance) override;
virtual bool Evaluate(FPoseContext& Output) override;
};
@@ -0,0 +1,169 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
#pragma once
#include "Containers/Array.h"
#include "Components/SkeletalMeshComponent.h"
#include "Containers/Map.h"
#include "GameFramework/Actor.h"
#include "Math/Rotator.h"
#include "Math/Transform.h"
#include "ReferenceSkeleton.h"
#include "Templates/UniquePtr.h"
#include "UObject/NameTypes.h"
#include "SGSettings/SGDebugVirtualHandSettings.h"
#include "SGVirtualHandComponent.generated.h"
class USkeletalMesh;
class USGHandPose;
class USGHapticGlove;
class USGWristTrackerComponent;
UCLASS(Config=Engine, Blueprintable, ClassGroup=(Rendering, Common), hidecategories=(Object, "Mesh|SkeletalAsset"),
editinlinenew, meta=(BlueprintSpawnableComponent))
class SENSEGLOVE_API USGVirtualHandComponent : public USkeletalMeshComponent
{
GENERATED_UCLASS_BODY()
public:
static const TArray<TArray<FName>>& GetLeftHandFingerBoneNames();
static const TArray<TArray<FName>>& GetRightHandFingerBoneNames();
static const FName& GetLeftHandFingerBoneName(int32 Finger, int32 Joint);
static const FName& GetRightHandFingerBoneName(int32 Finger, int32 Joint);
private:
struct FImpl;
struct FImplDeleter
{
void operator()(const FImpl* P) const;
};
TUniquePtr<FImpl, FImplDeleter> Pimpl;
FImplDeleter PimplDeleter;
private:
UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false"))
uint8 bRight : 1;
UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false"))
uint8 bHiddenInGameIfNoGloveDetected : 1;
UPROPERTY(EditAnywhere, Category="SenseGlove",
meta=(AllowPrivateAccess="false", EditCondition="bDrawDebugVirtualHand", EditConditionHides))
FSGDebugVirtualHandSettings DebugVirtualHandSettings;
private:
UPROPERTY(Transient)
uint8 bBackendInitialized : 1;
UPROPERTY(Transient)
USGHapticGlove* Glove;
UPROPERTY(Transient)
USGWristTrackerComponent* WristTracker;
public:
FORCEINLINE bool IsLeft() const
{
return !IsRight();
}
FORCEINLINE bool IsRight() const
{
return !!bRight;
}
void SetRight(const bool bInRight);
FORCEINLINE bool IsHiddenInGameIfNoGloveDetected() const
{
return !!bHiddenInGameIfNoGloveDetected;
}
FORCEINLINE void SetHiddenIfNoGloveDetected(const bool bInHiddenIfNoGloveDetected)
{
bHiddenInGameIfNoGloveDetected = bInHiddenIfNoGloveDetected;
}
FORCEINLINE void SetWristTracker(USGWristTrackerComponent* InWristTracker)
{
WristTracker = InWristTracker;
}
public:
virtual void SetAnimClass(class UClass* NewClass) override;
virtual void PostInitProperties() override;
#if WITH_EDITOR
virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
#endif /* WITH_EDITOR */
virtual void InitializeComponent() override;
virtual void UninitializeComponent() override;
virtual void BeginPlay() override;
virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
virtual void TickComponent(float DeltaTime,
enum ELevelTick TickType,
FActorComponentTickFunction* ThisTickFunction) override;
virtual void SetSkeletalMesh(USkeletalMesh* NewMesh, bool bReinitPose = true) override;
protected:
virtual void EditorTick(float DeltaTime,
enum ELevelTick TickType,
FActorComponentTickFunction* ThisTickFunction);
public:
bool IsGloveConnected() const;
USGHandPose* GetHandPose();
public:
const FName& GetFingerBoneName(int32 Finger, int32 Joint) const;
const FTransform& GetFingerBoneRefTransform(int32 Finger, int32 Joint) const;
FRotator GetFingerBoneRefRotation(int32 Finger, int32 Joint) const;
TMap<FName, FRotator> GetFingersBonesRotations();
};
@@ -0,0 +1,235 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
#pragma once
#include "GameFramework/Actor.h"
#include "Math/Rotator.h"
#include "Math/Vector.h"
#include "MotionControllerComponent.h"
#include "Templates/UniquePtr.h"
#include "SGSettings/SGDebugGizmoSettings.h"
#include "SGTypes/SGCoreTypes.h"
#include "SGWristTrackerComponent.generated.h"
class USGHandPose;
class USGHapticGlove;
UCLASS(Blueprintable, ClassGroup = MotionController, meta = (BlueprintSpawnableComponent))
class SENSEGLOVE_API USGWristTrackerComponent : public UMotionControllerComponent
{
GENERATED_UCLASS_BODY()
public:
DECLARE_EVENT_OneParam(USGWristTrackerComponent, FWristLocationChangedEvent, const FVector&)
FWristLocationChangedEvent& OnWristLocationChanged()
{
return WristLocationChangedEvent;
};
DECLARE_EVENT_OneParam(USGWristTrackerComponent, FWristRotationChangedEvent, const FRotator&)
FWristRotationChangedEvent& OnWristRotationChanged()
{
return WristRotationChangedEvent;
};
DECLARE_EVENT_TwoParams(USGWristTrackerComponent, FWristLocationAndRotationChangedEvent,
const FVector&, const FRotator&)
FWristLocationAndRotationChangedEvent& OnWristLocationAndRotationChanged()
{
return WristLocationAndRotationChangedEvent;
};
private:
FWristLocationChangedEvent WristLocationChangedEvent;
FWristRotationChangedEvent WristRotationChangedEvent;
FWristLocationAndRotationChangedEvent WristLocationAndRotationChangedEvent;
private:
struct FImpl;
struct FImplDeleter
{
void operator()(const FImpl* P) const;
};
TUniquePtr<FImpl, FImplDeleter> Pimpl;
FImplDeleter PimplDeleter;
private:
UPROPERTY(Config, EditAnywhere, Category = "Override Plugin Settings")
uint8 bOverridePluginWristTrackingSettings : 1;
/**
* If set to Custom, any desired location and rotation can be specified.
*/
UPROPERTY(Config, EditAnywhere, Category = "Override Plugin Settings",
meta=(EditCondition="bOverridePluginWristTrackingSettings", EditConditionHides))
ESGPositionalTrackingHardware TrackingHardware;
/**
* Valid only if TrackingHardware is set to Custom.
*/
UPROPERTY(Config, EditAnywhere, Category = "Override Plugin Settings",
meta=(EditCondition=
"bOverridePluginWristTrackingSettings && TrackingHardware == ESGPositionalTrackingHardware::Custom",
EditConditionHides))
FVector TrackingHardwareLocationOffset;
/**
* Valid only if TrackingHardware is set to Custom.
*/
UPROPERTY(Config, EditAnywhere, Category = "Override Plugin Settings",
meta=(EditCondition=
"bOverridePluginWristTrackingSettings && TrackingHardware == ESGPositionalTrackingHardware::Custom",
EditConditionHides))
FRotator TrackingHardwareRotationOffset;
UPROPERTY(Config, EditAnywhere, Category = "Override Plugin Settings")
uint8 bOverridePluginWristTrackingDebugSettings : 1;
/**
* If enabled, draws debug Wrist trackers where possible.
*/
UPROPERTY(Config, EditAnywhere, Category = "Override Plugin Settings",
meta=(EditCondition="bOverridePluginWristTrackingDebugSettings", EditConditionHides))
uint8 bDrawWristTrackerDebugGizmo : 1;
/**
* Valid only if bDrawWristTrackerDebugGizmo is enabled.
*/
UPROPERTY(Config, EditAnywhere, Category = "Override Plugin Settings",
meta=(EditCondition="bOverridePluginWristTrackingDebugSettings && bDrawWristTrackerDebugGizmo",
EditConditionHides))
FSGDebugGizmoSettings WristTrackerDebugGizmoSettings;
private:
UPROPERTY(Transient)
uint8 bBackendInitialized : 1;
UPROPERTY(Transient)
USGHapticGlove* Glove;
UPROPERTY(Transient)
FVector WristLocation;
UPROPERTY(Transient)
FRotator WristRotation;
public:
FORCEINLINE bool OverridesPluginWristTrackingSettings() const
{
return !!bOverridePluginWristTrackingSettings;
}
FORCEINLINE void OverridePluginWristTrackingSettings(const bool bInOverridePluginWristTrackingSettings)
{
bOverridePluginWristTrackingSettings = bInOverridePluginWristTrackingSettings;
}
ESGPositionalTrackingHardware GetTrackingHardware() const;
void SetTrackingHardware(ESGPositionalTrackingHardware InTrackingHardware);
const FVector& GetTrackingHardwareLocationOffset() const;
void SetTrackingHardwareLocationOffset(const FVector& InTrackingHardwareLocationOffset);
const FRotator& GetTrackingHardwareRotationOffset() const;
void SetTrackingHardwareRotationOffset(const FRotator& InTrackingHardwareRotationOffset);
FORCEINLINE bool OverridesPluginWristTrackingDebugSettings() const
{
return !!bOverridePluginWristTrackingDebugSettings;
}
FORCEINLINE void OverridePluginWristTrackingDebugSettings(const bool bInOverridePluginWristTrackingDebugSettings)
{
bOverridePluginWristTrackingDebugSettings = bInOverridePluginWristTrackingDebugSettings;
}
bool GetDrawWristTrackerDebugGizmo() const;
void SetDrawWristTrackerDebugGizmo(bool bInDrawWristTrackerDebugGizmo);
const FSGDebugGizmoSettings& GetWristTrackerDebugGizmoSettings() const;
void SetWristTrackerDebugGizmoSettings(const FSGDebugGizmoSettings& InWristTrackerDebugGizmoSettings);
FORCEINLINE bool IsLeft() const
{
return GetTrackingSource() == EControllerHand::Left;
}
FORCEINLINE bool IsRight() const
{
return GetTrackingSource() == EControllerHand::Right;
}
void SetRight(const bool bRight);
FORCEINLINE const FVector& GetWristLocation() const
{
return WristLocation;
}
FORCEINLINE const FRotator& GetWristRotation() const
{
return WristRotation;
}
public:
#if WITH_EDITOR
virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
#endif /* WITH_EDITOR */
virtual void InitializeComponent() override;
virtual void UninitializeComponent() override;
virtual void BeginPlay() override;
virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
virtual void TickComponent(float DeltaTime,
enum ELevelTick TickType,
FActorComponentTickFunction* ThisTickFunction) override;
protected:
virtual void EditorTick(float DeltaTime,
enum ELevelTick TickType,
FActorComponentTickFunction* ThisTickFunction);
};
@@ -0,0 +1,46 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
#pragma once
#include "GameFramework/GameModeBase.h"
#include "SGGameModeBase.generated.h"
UCLASS(Config=Game, NotPlaceable, BlueprintType, Blueprintable, Transient)
class SENSEGLOVE_API ASGGameModeBase : public AGameModeBase
{
GENERATED_UCLASS_BODY()
};
@@ -0,0 +1,112 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
#pragma once
#include "GameFramework/Pawn.h"
#include "Templates/UniquePtr.h"
#include "SGPawn.generated.h"
class UCameraComponent;
class USGVirtualHandComponent;
class USGWristTrackerComponent;
UCLASS(Config=Game, BlueprintType, Blueprintable)
class SENSEGLOVE_API ASGPawn : public APawn
{
GENERATED_UCLASS_BODY()
private:
struct FImpl;
struct FImplDeleter
{
void operator()(const FImpl* P) const;
};
TUniquePtr<FImpl, FImplDeleter> Pimpl;
FImplDeleter PimplDeleter;
private:
UPROPERTY(VisibleAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false"))
USceneComponent* SceneRoot;
UPROPERTY(VisibleAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false"))
UCameraComponent* Camera;
UPROPERTY(VisibleAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false"))
USGWristTrackerComponent* WristTrackerLeft;
UPROPERTY(VisibleAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false"))
USGWristTrackerComponent* WristTrackerRight;
UPROPERTY(VisibleAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false"))
USGVirtualHandComponent* HandLeft;
UPROPERTY(VisibleAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false"))
USGVirtualHandComponent* HandRight;
public:
FORCEINLINE UCameraComponent* GetCamera() const
{
return Camera;
}
FORCEINLINE USGWristTrackerComponent* GetWristTrackerLeft() const
{
return WristTrackerLeft;
}
FORCEINLINE USGWristTrackerComponent* GetWristTrackerRight() const
{
return WristTrackerRight;
}
FORCEINLINE USGVirtualHandComponent* GetHandLeft() const
{
return HandLeft;
}
FORCEINLINE USGVirtualHandComponent* GetHandRight() const
{
return HandRight;
}
public:
virtual void BeginPlay() override;
virtual void PreInitializeComponents() override;
};
@@ -35,8 +35,15 @@
#pragma once
#if ( ( defined( _MSVC_LANG ) && _MSVC_LANG >= 201703L ) || __cplusplus >= 201703L )
#define SG_CPP17 1
#else /* ( ( defined( _MSVC_LANG ) && _MSVC_LANG >= 201703L ) || __cplusplus >= 201703L ) */
#define SG_CPP17 0
#endif /* ( ( defined( _MSVC_LANG ) && _MSVC_LANG >= 201703L ) || __cplusplus >= 201703L ) */
#include "GameFramework/PlayerController.h"
#include "SGPlayerController.generated.h"
UCLASS(Config=Game, BlueprintType, Blueprintable)
class SENSEGLOVE_API ASGPlayerController : public APlayerController
{
GENERATED_UCLASS_BODY()
protected:
virtual void SetupInputComponent() override;
};
@@ -0,0 +1,107 @@
/**
* @file
*
* @author Mamadou Babaei <mamadou@senseglove.com>
*
* @section LICENSE
*
* (The MIT License)
*
* Copyright (c) 2020 - 2023 SenseGlove
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* @section DESCRIPTION
*
*
*/
#pragma once
#include "Containers/Array.h"
#include "Containers/Map.h"
#include "GameFramework/Actor.h"
#include "Templates/UniquePtr.h"
#include "UObject/NameTypes.h"
#include "SGVirtualHandActor.generated.h"
class USkeletalMesh;
class USkeleton;
class USceneComponent;
class USGHandPose;
class USGVirtualHandComponent;
class USGWristTrackerComponent;
UCLASS(Config=Game, BlueprintType)
class SENSEGLOVE_API ASGVirtualHandActor : public AActor
{
GENERATED_UCLASS_BODY()
private:
struct FImpl;
struct FImplDeleter
{
void operator()(const FImpl* P) const;
};
TUniquePtr<FImpl, FImplDeleter> Pimpl;
FImplDeleter PimplDeleter;
private:
UPROPERTY(VisibleAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false"))
USceneComponent* SceneRoot;
UPROPERTY(VisibleAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false"))
USGWristTrackerComponent* WristTracker;
UPROPERTY(VisibleAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false"))
USGVirtualHandComponent* VirtualHand;
public:
FORCEINLINE USGWristTrackerComponent* GetWristTracker() const
{
return WristTracker;
}
FORCEINLINE USGVirtualHandComponent* GetVirtualHand() const
{
return VirtualHand;
}
protected:
FORCEINLINE void SetMesh(USGVirtualHandComponent* InVirtualHand)
{
VirtualHand = InVirtualHand;
}
public:
virtual void BeginPlay() override;
virtual void PreInitializeComponents() override;
public:
bool IsLeft() const;
bool IsRight() const;
void SetRight(bool bRight);
bool IsGloveConnected() const;
};
+4
View File
@@ -52,11 +52,15 @@ public class SenseGlove : ModuleRules
PrivateDependencyModuleNames.AddRange(
new string[]
{
"AnimGraphRuntime",
"CoreUObject",
"Engine",
"HeadMountedDisplay",
"SenseGloveConnect",
"SenseGloveCore",
"SenseGloveDebug",
"SenseGloveLog",
"SenseGloveSettings",
"SenseGloveTypes",
}
);
@@ -40,8 +40,11 @@
#include "Android/AndroidJava.h"
#endif /* PLATFORM_ANDROID */
#include "Misc/Paths.h"
#if PLATFORM_ANDROID
#include "SGConnectImpl/SGExportedFunctions.h"
#include "SGInterop/SGIC_FString.h"
#include "SGInterop/SGIC_jclass.h"
#include "SGInterop/SGIC_jmethodID.h"
#include "SGInterop/SGIC_JNIEnv_Ptr.h"
@@ -110,10 +113,13 @@ int32 FSGConnectJNI::Initialize()
}
FSGIC_jmethodID InGetLibraryVersionMethodIDContainer{GetLibraryVersionMethodID};
FSGIC_FString ProjectSavedDirContainer{FPaths::ProjectSavedDir()};
Result = SGConnectImpl_Android_Initialize(&InEnvContainer, &InClassContainer,
&InInitMethodIDContainer,
&InDisposeMethodIDContainer,
&InGetLibraryVersionMethodIDContainer);
&InGetLibraryVersionMethodIDContainer,
&ProjectSavedDirContainer);
#endif /* PLATFORM_ANDROID */
return Result;
@@ -40,8 +40,11 @@
#include "Android/AndroidJava.h"
#endif /* PLATFORM_ANDROID */
#include "Misc/Paths.h"
#if PLATFORM_ANDROID
#include "SGCoreImpl/SGExportedFunctions.h"
#include "SGInterop/SGIC_FString.h"
#include "SGInterop/SGIC_jclass.h"
#include "SGInterop/SGIC_jmethodID.h"
#include "SGInterop/SGIC_JNIEnv_Ptr.h"
@@ -123,11 +126,14 @@ int32 FSGCoreJNI::Initialize()
}
FSGIC_jmethodID InWriteHapticsMethodIDContainer{WriteHapticsMethodID};
FSGIC_FString ProjectSavedDirContainer{FPaths::ProjectSavedDir()};
Result = SGCoreImpl_Android_Initialize(&InEnvContainer, &InClassContainer,
&InActiveDevicesMethodIDContainer,
&InGetDeviceStringMethodIDContainer,
&InGetSensorStringMethodIDContainer,
&InWriteHapticsMethodIDContainer);
&InWriteHapticsMethodIDContainer,
&ProjectSavedDirContainer);
#endif /* PLATFORM_ANDROID */
return Result;
@@ -64,15 +64,8 @@ public class SenseGloveAndroid : ModuleRules
if (Target.Platform == UnrealTargetPlatform.Android)
{
PrivateIncludePathModuleNames.AddRange(
new string[]
{
"Launch",
"Settings",
}
);
AdditionalPropertiesForReceipt.Add("AndroidPlugin", Path.Combine(ModuleDirectory, "SenseGloveAndroid_UPL.xml"));
AdditionalPropertiesForReceipt.Add("AndroidPlugin",
Path.Combine(ModuleDirectory, "SenseGloveAndroid_UPL.xml"));
}
}
}
@@ -60,14 +60,16 @@ int32 SGConnectImpl_Android_Initialize(
void* InClass,
void* InInitMethodID,
void* InDisposeMethodID,
void* InGetLibraryVersionMethodID)
void* InGetLibraryVersionMethodID,
void* StoragePath)
{
return SGConnect::Android::Initialize(
StaticCast<FSGIC_JNIEnv_Ptr*>(InEnv)->Ptr,
StaticCast<FSGIC_jclass*>(InClass)->Class,
StaticCast<FSGIC_jmethodID*>(InInitMethodID)->MethodID,
StaticCast<FSGIC_jmethodID*>(InDisposeMethodID)->MethodID,
StaticCast<FSGIC_jmethodID*>(InGetLibraryVersionMethodID)->MethodID);
StaticCast<FSGIC_jmethodID*>(InGetLibraryVersionMethodID)->MethodID,
std::string{TCHAR_TO_UTF8(*StaticCast<FSGIC_FString*>(StoragePath)->String)});
}
#endif /* PLATFORM_ANDROID */
@@ -47,7 +47,7 @@ public:
* -3 : An Unexpected error occured. Please try again.
* -2 : Device Scanning is already running within a different program.
* -1 : Device Scanning already being initialized (function called twice in short succession).
* 0 : Device Scanning is already running in within this program.
* 0 : Device Scanning is already running within this program.
* 1 : Successfully started up DeviceScanning from the current program.
*/
static int32 Init();
@@ -74,7 +74,8 @@ SENSEGLOVECONNECTIMPL_PUBLIC_API int32 SGConnectImpl_Android_Initialize(
void* InClass,
void* InInitMethodID,
void* InDisposeMethodID,
void* InGetLibraryVersionMethodID);
void* InGetLibraryVersionMethodID,
void* StoragePath);
#endif /* PLATFORM_ANDROID */
/*******************************************************************************
@@ -83,12 +83,33 @@ public class SenseGloveConnectImpl : ModuleRules
if (Target.Platform == UnrealTargetPlatform.Android)
{
#if ! UE_5_2_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "android"));
#if UE_5_1_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "r25b"));
#elif UE_4_27_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "r21e"));
#else
Debug.Assert(false, "Developing for Android on UE versions older than 4.27 is not supported!");
#endif
#if UE_5_2_OR_LATER
if (Target.Architecture == UnrealArch.Arm64)
{
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "arm64"));
}
else if (Target.Architecture == UnrealArch.X64)
{
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "x64"));
}
else
{
Debug.Assert(false, "Unsupported Android architecture!");
}
#else
IAndroidToolChain ToolChain = AndroidExports.CreateToolChain(Target.ProjectFile);
List<string> Architectures = ToolChain.GetAllArchitectures();
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "android"));
foreach (string Arch in Architectures)
{
if (Arch == "-arm64")
@@ -113,15 +134,13 @@ public class SenseGloveConnectImpl : ModuleRules
}
else
{
Debug.Assert(false, "Only AArch64/ARM64 variant of Android is supported!");
Debug.Assert(false, "Unsupported Android architecture!");
break;
}
}
#endif
LibraryName = string.Format("lib{0}.a", LibraryName);
#else
Debug.Assert(false, "Developing for Android on UE 5.2+ is not yet supported!");
#endif
}
else if (Target.Platform == UnrealTargetPlatform.Linux)
{
@@ -134,18 +153,8 @@ public class SenseGloveConnectImpl : ModuleRules
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v20"));
#elif UE_4_27_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v19"));
#elif UE_4_26_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v17"));
#elif UE_4_25_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v16"));
#elif UE_4_24_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v15"));
#elif UE_4_23_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v15"));
#elif UE_4_22_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v13"));
#else
Debug.Assert(false, "Unsupported compiler!");
Debug.Assert(false, "Unsupported engine version or compiler!");
#endif
}
else if (Target.Platform == UnrealTargetPlatform.Win64)
@@ -157,19 +166,17 @@ public class SenseGloveConnectImpl : ModuleRules
case WindowsCompiler.VisualStudio2022:
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "msvc143"));
break;
#endif
#if UE_4_22_OR_LATER
case WindowsCompiler.VisualStudio2019:
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "msvc142"));
break;
#endif
#if ! UE_5_0_OR_LATER && UE_4_17_OR_LATER
#if ! UE_5_0_OR_LATER && UE_4_27_OR_LATER
case WindowsCompiler.VisualStudio2017:
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "msvc141"));
break;
#endif
default:
Debug.Assert(false, "Unsupported compiler!");
Debug.Assert(false, "Unsupported engine version or compiler!");
break;
}
@@ -207,12 +214,33 @@ public class SenseGloveConnectImpl : ModuleRules
if (Target.Platform == UnrealTargetPlatform.Android)
{
#if ! UE_5_2_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "android"));
#if UE_5_1_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "r25b"));
#elif UE_4_27_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "r21e"));
#else
Debug.Assert(false, "Developing for Android on UE versions older than 4.27 is not supported!");
#endif
#if UE_5_2_OR_LATER
if (Target.Architecture == UnrealArch.Arm64)
{
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "arm64"));
}
else if (Target.Architecture == UnrealArch.X64)
{
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "x64"));
}
else
{
Debug.Assert(false, "Unsupported Android architecture!");
}
#else
IAndroidToolChain ToolChain = AndroidExports.CreateToolChain(Target.ProjectFile);
List<string> Architectures = ToolChain.GetAllArchitectures();
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "android"));
foreach (string Arch in Architectures)
{
if (Arch == "-arm64")
@@ -237,15 +265,13 @@ public class SenseGloveConnectImpl : ModuleRules
}
else
{
Debug.Assert(false, "Only AArch64/ARM64 variant of Android is supported!");
Debug.Assert(false, "Unsupported Android architecture!");
break;
}
}
#endif
LibraryName = string.Format("lib{0}.a", LibraryName);
#else
Debug.Assert(false, "Developing for Android on UE 5.2+ is not yet supported!");
#endif
}
else if (Target.Platform == UnrealTargetPlatform.Linux)
{
@@ -258,18 +284,8 @@ public class SenseGloveConnectImpl : ModuleRules
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v20"));
#elif UE_4_27_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v19"));
#elif UE_4_26_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v17"));
#elif UE_4_25_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v16"));
#elif UE_4_24_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v15"));
#elif UE_4_23_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v15"));
#elif UE_4_22_OR_LATER
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v13"));
#else
Debug.Assert(false, "Unsupported compiler!");
Debug.Assert(false, "Unsupported engine version or compiler!");
#endif
}
else if (Target.Platform == UnrealTargetPlatform.Win64)
@@ -281,19 +297,17 @@ public class SenseGloveConnectImpl : ModuleRules
case WindowsCompiler.VisualStudio2022:
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "msvc143"));
break;
#endif
#if UE_4_22_OR_LATER
case WindowsCompiler.VisualStudio2019:
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "msvc142"));
break;
#endif
#if ! UE_5_0_OR_LATER && UE_4_17_OR_LATER
#if ! UE_5_0_OR_LATER && UE_4_27_OR_LATER
case WindowsCompiler.VisualStudio2017:
LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "msvc141"));
break;
#endif
default:
Debug.Assert(false, "Unsupported compiler!");
Debug.Assert(false, "Unsupported engine version or compiler!");
break;
}
@@ -68,14 +68,14 @@ float FSGAnatomy::GetThumbJointLimit(const bool bRightHanded, const int32 Joint,
return SGCoreImpl_FSGAnatomyImpl_GetThumbJointLimit(bRightHanded, Joint, Movement, bMax);
}
float FSGAnatomy::NormalizeFingerFlexion(const float FlexionInRadians)
float FSGAnatomy::NormalizeFingerFlexion(const float FlexionInDegrees)
{
return SGCoreImpl_FSGAnatomyImpl_NormalizeFingerFlexion(FlexionInRadians);
return SGCoreImpl_FSGAnatomyImpl_NormalizeFingerFlexion(FlexionInDegrees);
}
float FSGAnatomy::NormalizeThumbFlexion(const float FlexionInRadians)
float FSGAnatomy::NormalizeThumbFlexion(const float FlexionInDegrees)
{
return SGCoreImpl_FSGAnatomyImpl_NormalizeThumbFlexion(FlexionInRadians);
return SGCoreImpl_FSGAnatomyImpl_NormalizeThumbFlexion(FlexionInDegrees);
}
TArray<TArray<FVector>> FSGAnatomy::GetDefaultHandAngles(const bool bRightHanded)
@@ -76,13 +76,6 @@ struct USGBasicHandModel::FImpl
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGBasicHandModel* USGBasicHandModel::NewBasicHandModel(UObject* Outer, const FSGBasicHandModelImpl& BasicHandModelImpl)
@@ -233,28 +226,17 @@ TArray<FVector> USGBasicHandModel::GetBaseJointAngles()
}
USGBasicHandModel::USGBasicHandModel()
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGBasicHandModelImpl OutBasicHandModelImplContainer;
SGCoreImpl_FSGBasicHandModelImpl_ctor(&OutBasicHandModelImplContainer);
Pimpl->BasicHandModelImpl = MoveTemp(OutBasicHandModelImplContainer.BasicHandModelImpl);
Pimpl->SyncUProperties();
}
USGBasicHandModel::USGBasicHandModel(const bool bRightHanded, const TArray<TArray<float>>& Lengths,
const TArray<FVector>& StartPositions)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGBasicHandModelImpl OutBasicHandModelImplContainer;
FSGIC_TArray_TArray_float LengthsContainer{Lengths};
@@ -263,17 +245,11 @@ USGBasicHandModel::USGBasicHandModel(const bool bRightHanded, const TArray<TArra
&OutBasicHandModelImplContainer, bRightHanded, &LengthsContainer, &StartPositionsContainer);
Pimpl->BasicHandModelImpl = MoveTemp(OutBasicHandModelImplContainer.BasicHandModelImpl);
Pimpl->SyncUProperties();
}
USGBasicHandModel::USGBasicHandModel(bool bRightHanded, const TArray<FSGFloatArray>& Lengths,
const TArray<FVector>& StartPositions)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGBasicHandModelImpl OutBasicHandModelImplContainer;
FSGIC_TArray_TArray_float LengthsContainer{
@@ -284,17 +260,11 @@ USGBasicHandModel::USGBasicHandModel(bool bRightHanded, const TArray<FSGFloatArr
&OutBasicHandModelImplContainer, bRightHanded, &LengthsContainer, &StartPositionsContainer);
Pimpl->BasicHandModelImpl = MoveTemp(OutBasicHandModelImplContainer.BasicHandModelImpl);
Pimpl->SyncUProperties();
}
USGBasicHandModel::USGBasicHandModel(const bool bRightHanded, const TArray<TArray<float>>& Lengths,
const TArray<FVector>& StartPositions, const TArray<FQuat>& StartRotations)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGBasicHandModelImpl OutBasicHandModelImplContainer;
FSGIC_TArray_TArray_float LengthsContainer{Lengths};
@@ -305,17 +275,11 @@ USGBasicHandModel::USGBasicHandModel(const bool bRightHanded, const TArray<TArra
&StartPositionsContainer, &StartRotationsContainer);
Pimpl->BasicHandModelImpl = MoveTemp(OutBasicHandModelImplContainer.BasicHandModelImpl);
Pimpl->SyncUProperties();
}
USGBasicHandModel::USGBasicHandModel(const bool bRightHanded, const TArray<TArray<float>>& Lengths,
const TArray<FVector>& StartPositions, const TArray<FRotator>& StartRotations)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGBasicHandModelImpl OutBasicHandModelImplContainer;
FSGIC_TArray_TArray_float LengthsContainer{Lengths};
@@ -326,17 +290,11 @@ USGBasicHandModel::USGBasicHandModel(const bool bRightHanded, const TArray<TArra
&StartPositionsContainer, &StartRotationsContainer);
Pimpl->BasicHandModelImpl = MoveTemp(OutBasicHandModelImplContainer.BasicHandModelImpl);
Pimpl->SyncUProperties();
}
USGBasicHandModel::USGBasicHandModel(const bool bRightHanded, const TArray<FSGFloatArray>& Lengths,
const TArray<FVector>& StartPositions, const TArray<FQuat>& StartRotations)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGBasicHandModelImpl OutBasicHandModelImplContainer;
FSGIC_TArray_TArray_float LengthsContainer{
@@ -349,17 +307,11 @@ USGBasicHandModel::USGBasicHandModel(const bool bRightHanded, const TArray<FSGFl
&StartPositionsContainer, &StartRotationsContainer);
Pimpl->BasicHandModelImpl = MoveTemp(OutBasicHandModelImplContainer.BasicHandModelImpl);
Pimpl->SyncUProperties();
}
USGBasicHandModel::USGBasicHandModel(const bool bRightHanded, const TArray<FSGFloatArray>& Lengths,
const TArray<FVector>& StartPositions, const TArray<FRotator>& StartRotations)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGBasicHandModelImpl OutBasicHandModelImplContainer;
FSGIC_TArray_TArray_float LengthsContainer{
@@ -372,19 +324,12 @@ USGBasicHandModel::USGBasicHandModel(const bool bRightHanded, const TArray<FSGFl
&StartPositionsContainer, &StartRotationsContainer);
Pimpl->BasicHandModelImpl = MoveTemp(OutBasicHandModelImplContainer.BasicHandModelImpl);
Pimpl->SyncUProperties();
}
USGBasicHandModel::USGBasicHandModel(const FSGBasicHandModelImpl& BasicHandModelImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
SetBasicHandModelImpl(BasicHandModelImpl);
Pimpl->SyncUProperties();
}
USGBasicHandModel::~USGBasicHandModel() = default;
@@ -399,13 +344,11 @@ void USGBasicHandModel::SetBasicHandModelImpl(const FSGBasicHandModelImpl& Basic
const FSGBasicHandModelImpl& USGBasicHandModel::ToBasicHandModelImpl() const
{
Pimpl->SyncImplObject();
return Pimpl->BasicHandModelImpl;
}
FSGBasicHandModelImpl& USGBasicHandModel::ToBasicHandModelImpl()
{
Pimpl->SyncImplObject();
return Pimpl->BasicHandModelImpl;
}
@@ -425,8 +368,6 @@ TArray<TArray<float>> USGBasicHandModel::GetFingerLengths() const
TArray<float> USGBasicHandModel::GetFingerLengths(const ESGFinger Finger) const
{
Pimpl->SyncImplObject();
FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()};
FSGIC_TArray_float OutLengthsContainer;
FSGIC_ESGFinger FingerContainer{Finger};
@@ -437,26 +378,18 @@ TArray<float> USGBasicHandModel::GetFingerLengths(const ESGFinger Finger) const
void USGBasicHandModel::SetFingerLengths(const ESGFinger Finger, const TArray<float>& Lengths)
{
Pimpl->SyncImplObject();
FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()};
FSGIC_ESGFinger FingerContainer{Finger};
FSGIC_TArray_float LengthsContainer{Lengths};
SGCoreImpl_FSGBasicHandModelImpl_SetFingerLengths_ESGFinger(&InstanceContainer, &FingerContainer,
&LengthsContainer);
Pimpl->SyncUProperties();
}
void USGBasicHandModel::SetFingerLengths(const uint8 Finger, const TArray<float>& Lengths)
{
Pimpl->SyncImplObject();
FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()};
FSGIC_TArray_float LengthsContainer{Lengths};
SGCoreImpl_FSGBasicHandModelImpl_SetFingerLengths_uint8Finger(&InstanceContainer, Finger, &LengthsContainer);
Pimpl->SyncUProperties();
}
TArray<TArray<float>> USGBasicHandModel::GetFingerRatios() const
@@ -469,8 +402,6 @@ TArray<TArray<float>> USGBasicHandModel::GetFingerRatios() const
TArray<float> USGBasicHandModel::GetFingerRatios(const ESGFinger Finger) const
{
Pimpl->SyncImplObject();
FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()};
FSGIC_ESGFinger FingerContainer{Finger};
FSGIC_TArray_float OutRatiosContainer;
@@ -489,26 +420,18 @@ TArray<FVector> USGBasicHandModel::GetStartJointPositions() const
void USGBasicHandModel::SetStartJointPosition(const ESGFinger Finger, const FVector& Position)
{
Pimpl->SyncImplObject();
FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()};
FSGIC_ESGFinger FingerContainer{Finger};
FSGIC_FVector PositionContainer{Position};
SGCoreImpl_FSGBasicHandModelImpl_SetStartJointPosition_ESGFinger(&InstanceContainer, &FingerContainer,
&PositionContainer);
Pimpl->SyncUProperties();
}
void USGBasicHandModel::SetStartJointPosition(const uint8 Finger, const FVector& Position)
{
Pimpl->SyncImplObject();
FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()};
FSGIC_FVector PositionContainer{Position};
SGCoreImpl_FSGBasicHandModelImpl_SetStartJointPosition_uin8Finger(&InstanceContainer, Finger, &PositionContainer);
Pimpl->SyncUProperties();
}
TArray<FQuat> USGBasicHandModel::GetStartJointRotationsQ() const
@@ -529,74 +452,53 @@ TArray<FRotator> USGBasicHandModel::GetStartJointRotations() const
FVector USGBasicHandModel::GetJointPosition(const ESGFinger Finger) const
{
Pimpl->SyncImplObject();
FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()};
FSGIC_FVector OutPositionContainer;
FSGIC_ESGFinger FingerContainer{Finger};
SGCoreImpl_FSGBasicHandModelImpl_GetJointPosition(&InstanceContainer, &OutPositionContainer, &FingerContainer);
return MoveTemp(OutPositionContainer.Vector);
}
void USGBasicHandModel::SetJointPosition(const FVector& NewPosition, const ESGFinger Finger)
{
Pimpl->SyncImplObject();
FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()};
FSGIC_FVector NewPositionContainer{NewPosition};
FSGIC_ESGFinger FingerContainer{Finger};
SGCoreImpl_FSGBasicHandModelImpl_SetJointPosition(&InstanceContainer, &NewPositionContainer, &FingerContainer);
Pimpl->SyncUProperties();
}
FQuat USGBasicHandModel::GetJointRotationQ(const ESGFinger Finger) const
{
Pimpl->SyncImplObject();
FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()};
FSGIC_FQuat OutRotationContainer;
FSGIC_ESGFinger FingerContainer{Finger};
SGCoreImpl_FSGBasicHandModelImpl_GetJointRotation(&InstanceContainer, &OutRotationContainer, &FingerContainer);
return MoveTemp(OutRotationContainer.Quat);
}
FRotator USGBasicHandModel::GetJointRotation(const ESGFinger Finger) const
{
Pimpl->SyncImplObject();
FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()};
FSGIC_FQuat OutRotationContainer;
FSGIC_ESGFinger FingerContainer{Finger};
SGCoreImpl_FSGBasicHandModelImpl_GetJointRotation(&InstanceContainer, &OutRotationContainer, &FingerContainer);
return OutRotationContainer.Quat.Rotator();
}
void USGBasicHandModel::SetJointRotation(const FQuat& NewRotation, const ESGFinger Finger)
{
Pimpl->SyncImplObject();
FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()};
FSGIC_FQuat NewRotationContainer{NewRotation};
FSGIC_ESGFinger FingerContainer{Finger};
SGCoreImpl_FSGBasicHandModelImpl_SetJointRotation(&InstanceContainer, &NewRotationContainer, &FingerContainer);
Pimpl->SyncUProperties();
}
void USGBasicHandModel::SetJointRotation(const FRotator& NewRotation, const ESGFinger Finger)
{
Pimpl->SyncImplObject();
FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()};
FSGIC_FQuat NewRotationContainer{NewRotation.Quaternion()};
FSGIC_ESGFinger FingerContainer{Finger};
SGCoreImpl_FSGBasicHandModelImpl_SetJointRotation(&InstanceContainer, &NewRotationContainer, &FingerContainer);
Pimpl->SyncUProperties();
}
TArray<float> USGBasicHandModel::GetTotalLengths() const
@@ -609,8 +511,6 @@ TArray<float> USGBasicHandModel::GetTotalLengths() const
float USGBasicHandModel::GetTotalLength(const ESGFinger Finger) const
{
Pimpl->SyncImplObject();
FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()};
FSGIC_ESGFinger FingerContainer{Finger};
return SGCoreImpl_FSGBasicHandModelImpl_GetTotalLength(&InstanceContainer, &FingerContainer);
@@ -618,8 +518,6 @@ float USGBasicHandModel::GetTotalLength(const ESGFinger Finger) const
TArray<FVector> USGBasicHandModel::Get3DLengths(const ESGFinger Finger) const
{
Pimpl->SyncImplObject();
FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()};
FSGIC_TArray_FVector OutLengthsContainer;
FSGIC_ESGFinger FingerContainer{Finger};
@@ -630,8 +528,6 @@ TArray<FVector> USGBasicHandModel::Get3DLengths(const ESGFinger Finger) const
bool USGBasicHandModel::Equals(const USGBasicHandModel* BasicHandModel) const
{
Pimpl->SyncImplObject();
FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()};
FSGIC_FSGBasicHandModelImpl BasicHandModelContainer{BasicHandModel->ToBasicHandModelImpl()};
return SGCoreImpl_FSGBasicHandModelImpl_Equals(&InstanceContainer, &BasicHandModelContainer);
@@ -639,8 +535,6 @@ bool USGBasicHandModel::Equals(const USGBasicHandModel* BasicHandModel) const
FString USGBasicHandModel::ToString() const
{
Pimpl->SyncImplObject();
FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGBasicHandModelImpl_ToString(&InstanceContainer, &OutStringContainer);
@@ -649,8 +543,6 @@ FString USGBasicHandModel::ToString() const
FString USGBasicHandModel::ToString(const bool bLengthsOnly) const
{
Pimpl->SyncImplObject();
FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGBasicHandModelImpl_ToString_bLengthsOnly(&InstanceContainer, &OutStringContainer, bLengthsOnly);
@@ -659,8 +551,6 @@ FString USGBasicHandModel::ToString(const bool bLengthsOnly) const
FString USGBasicHandModel::SGSerialize() const
{
Pimpl->SyncImplObject();
FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGBasicHandModelImpl_Serialize(&InstanceContainer, &OutStringContainer);
@@ -678,11 +568,3 @@ void USGBasicHandModel::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGBasicHandModel::FImpl::SyncUProperties()
{
}
void USGBasicHandModel::FImpl::SyncImplObject()
{
}
@@ -46,42 +46,6 @@
#include "SGInterop/SGIC_FString.h"
#include "SGInterop/SGIC_TSharedPtr_FSGBetaDeviceImpl.h"
struct USGBetaDevice::FImpl
{
/************************
* Member variables
************************/
/************************
* Owner object
************************/
USGDevice* Owner;
/************************
* Constructor / Destructor
************************/
explicit FImpl(USGBetaDevice* InOwner);
~FImpl();
/************************
* Default copy constructor & copy assignment operator
************************/
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGBetaDevice* USGBetaDevice::NewBetaDevice(UObject* Outer, const FSGBetaDeviceImpl& BetaDeviceImpl)
{
USGBetaDevice* Instance = NewObject<USGBetaDevice>(Outer);
@@ -128,29 +92,18 @@ USGBetaDevice* USGBetaDevice::Parse(UObject* Outer, const FString& String)
}
USGBetaDevice::USGBetaDevice()
: USGDevice(),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGDevice()
{
FSGIC_TSharedPtr_FSGBetaDeviceImpl OutSharedPtrContainer;
SGCoreImpl_FSGBetaDeviceImpl_ctor_MakeShared(&OutSharedPtrContainer);
SetSGDeviceImpl(OutSharedPtrContainer.Ptr.ToSharedRef());
Pimpl->SyncUProperties();
}
USGBetaDevice::USGBetaDevice(const FString& ConstantsString, const FString& DeviceId,
const FString& HardwareVersion,
const int32 FirmwareVersion, const int32 SubFirmwareVersion)
: USGDevice(),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGDevice()
{
FSGIC_TSharedPtr_FSGBetaDeviceImpl OutSharedPtrContainer;
FSGIC_FString ConstantsStringContainer{ConstantsString};
@@ -161,55 +114,27 @@ USGBetaDevice::USGBetaDevice(const FString& ConstantsString, const FString& Devi
&HardwareVersionContainer, FirmwareVersion, SubFirmwareVersion);
SetSGDeviceImpl(OutSharedPtrContainer.Ptr.ToSharedRef());
Pimpl->SyncUProperties();
}
USGBetaDevice::USGBetaDevice(const FSGBetaDeviceImpl& BetaDeviceImpl)
: USGDevice(BetaDeviceImpl),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGDevice(BetaDeviceImpl)
{
Pimpl->SyncUProperties();
}
USGBetaDevice::USGBetaDevice(TSharedRef<FSGBetaDeviceImpl> BetaDeviceImpl)
: USGDevice(MoveTemp(BetaDeviceImpl)),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGDevice(MoveTemp(BetaDeviceImpl))
{
Pimpl->SyncUProperties();
}
USGBetaDevice::~USGBetaDevice() = default;
TSharedRef<FSGBetaDeviceImpl> USGBetaDevice::ToBetaDeviceImpl() const
{
SyncImplObject();
return FSGDeviceImplCast::ToBetaDeviceImpl(ToSGDeviceImpl());
}
void USGBetaDevice::SyncImplObject() const
{
Super::SyncImplObject();
Pimpl->SyncImplObject();
}
void USGBetaDevice::SyncUProperties()
{
Super::SyncUProperties();
Pimpl->SyncUProperties();
}
ESGDeviceType USGBetaDevice::GetDeviceType() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGBetaDeviceImpl InstanceContainer{ToBetaDeviceImpl()};
FSGIC_ESGDeviceType OutTypeContainer;
SGCoreImpl_FSGBetaDeviceImpl_GetDeviceType(&InstanceContainer, &OutTypeContainer);
@@ -218,8 +143,6 @@ ESGDeviceType USGBetaDevice::GetDeviceType() const
FString USGBetaDevice::GetDeviceId() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGBetaDeviceImpl InstanceContainer{ToBetaDeviceImpl()};
FSGIC_FString OutIdContainer;
SGCoreImpl_FSGBetaDeviceImpl_GetDeviceId(&InstanceContainer, &OutIdContainer);
@@ -228,8 +151,6 @@ FString USGBetaDevice::GetDeviceId() const
FString USGBetaDevice::GetHardwareVersion() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGBetaDeviceImpl InstanceContainer{ToBetaDeviceImpl()};
FSGIC_FString VersionContainer;
SGCoreImpl_FSGBetaDeviceImpl_GetHardwareVersion(&InstanceContainer, &VersionContainer);
@@ -238,24 +159,18 @@ FString USGBetaDevice::GetHardwareVersion() const
int32 USGBetaDevice::GetFirmwareVersion() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGBetaDeviceImpl InstanceContainer{ToBetaDeviceImpl()};
return SGCoreImpl_FSGBetaDeviceImpl_GetFirmwareVersion(&InstanceContainer);
}
int32 USGBetaDevice::GetSubFirmwareVersion() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGBetaDeviceImpl InstanceContainer{ToBetaDeviceImpl()};
return SGCoreImpl_FSGBetaDeviceImpl_GetSubFirmwareVersion(&InstanceContainer);
}
FString USGBetaDevice::GetConstantsString() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGBetaDeviceImpl InstanceContainer{ToBetaDeviceImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGBetaDeviceImpl_GetConstantsString(&InstanceContainer, &OutStringContainer);
@@ -264,8 +179,6 @@ FString USGBetaDevice::GetConstantsString() const
FString USGBetaDevice::GetSensorData() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGBetaDeviceImpl InstanceContainer{ToBetaDeviceImpl()};
FSGIC_FString OutDataContainer;
SGCoreImpl_FSGBetaDeviceImpl_GetSensorData(&InstanceContainer, &OutDataContainer);
@@ -274,8 +187,6 @@ FString USGBetaDevice::GetSensorData() const
FString USGBetaDevice::GetLastCommand() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGBetaDeviceImpl InstanceContainer{ToBetaDeviceImpl()};
FSGIC_FString OutCommandContainer;
SGCoreImpl_FSGBetaDeviceImpl_GetLastCommand(&InstanceContainer, &OutCommandContainer);
@@ -284,8 +195,6 @@ FString USGBetaDevice::GetLastCommand() const
bool USGBetaDevice::SendHaptics(const FString& Command) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGBetaDeviceImpl InstanceContainer{ToBetaDeviceImpl()};
FSGIC_FString CommandContainer{Command};
return SGCoreImpl_FSGBetaDeviceImpl_SendHaptics(&InstanceContainer, &CommandContainer);
@@ -293,30 +202,8 @@ bool USGBetaDevice::SendHaptics(const FString& Command) const
FString USGBetaDevice::ToString() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGBetaDeviceImpl InstanceContainer{ToBetaDeviceImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGBetaDeviceImpl_ToString(&InstanceContainer, &OutStringContainer);
return MoveTemp(OutStringContainer.String);
}
USGBetaDevice::FImpl::FImpl(USGBetaDevice* InOwner)
: Owner(InOwner)
{
}
USGBetaDevice::FImpl::~FImpl() = default;
void USGBetaDevice::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGBetaDevice::FImpl::SyncUProperties()
{
}
void USGBetaDevice::FImpl::SyncImplObject()
{
}
@@ -44,42 +44,6 @@
#include "SGInterop/SGIC_TArray_int32.h"
#include "SGInterop/SGIC_TSharedPtr_FSGBuzzCommandImpl.h"
struct USGBuzzCommand::FImpl
{
/************************
* Member variables
************************/
/************************
* Owner object
************************/
USGBuzzCommand* Owner;
/************************
* Constructor / Destructor
************************/
explicit FImpl(USGBuzzCommand* InOwner);
~FImpl();
/************************
* Default copy constructor & copy assignment operator
************************/
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGBuzzCommand* USGBuzzCommand::NewBuzzCommand(UObject* Outer, const FSGBuzzCommandImpl& BuzzCommandImpl)
{
USGBuzzCommand* Instance = NewObject<USGBuzzCommand>(Outer);
@@ -140,27 +104,16 @@ USGBuzzCommand* USGBuzzCommand::Off(UObject* Outer)
}
USGBuzzCommand::USGBuzzCommand()
: USGFingerCommand(),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGFingerCommand()
{
FSGIC_TSharedPtr_FSGBuzzCommandImpl OutSharedPtrContainer;
SGCoreImpl_FSGBuzzCommandImpl_ctor_MakeShared(&OutSharedPtrContainer);
SetFingerCommandImpl(OutSharedPtrContainer.Ptr.ToSharedRef());
Pimpl->SyncUProperties();
}
USGBuzzCommand::USGBuzzCommand(const TArray<int32>& BuzzLevels)
: USGFingerCommand(BuzzLevels),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGFingerCommand(BuzzLevels)
{
FSGIC_TSharedPtr_FSGBuzzCommandImpl OutSharedPtrContainer;
FSGIC_TArray_int32 BuzzLevelsContainer{BuzzLevels};
@@ -168,33 +121,21 @@ USGBuzzCommand::USGBuzzCommand(const TArray<int32>& BuzzLevels)
&OutSharedPtrContainer, &BuzzLevelsContainer);
SetFingerCommandImpl(OutSharedPtrContainer.Ptr.ToSharedRef());
Pimpl->SyncUProperties();
}
USGBuzzCommand::USGBuzzCommand(
const int32 Thumb, const int32 Index, const int32 Middle, const int32 Ring, const int32 Pinky)
: USGFingerCommand(),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGFingerCommand()
{
FSGIC_TSharedPtr_FSGBuzzCommandImpl OutSharedPtrContainer;
SGCoreImpl_FSGBuzzCommandImpl_ctor_Thumb_Index_Middle_Ring_Pinky_MakeShared(
&OutSharedPtrContainer, Thumb, Index, Middle, Ring, Pinky);
SetFingerCommandImpl(OutSharedPtrContainer.Ptr.ToSharedRef());
Pimpl->SyncUProperties();
}
USGBuzzCommand::USGBuzzCommand(const ESGFinger Finger, const int32 BuzzLevel)
: USGFingerCommand(),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGFingerCommand()
{
FSGIC_TSharedPtr_FSGBuzzCommandImpl OutSharedPtrContainer;
FSGIC_ESGFinger FingerContainer{Finger};
@@ -202,55 +143,27 @@ USGBuzzCommand::USGBuzzCommand(const ESGFinger Finger, const int32 BuzzLevel)
&OutSharedPtrContainer, &FingerContainer, BuzzLevel);
SetFingerCommandImpl(OutSharedPtrContainer.Ptr.ToSharedRef());
Pimpl->SyncUProperties();
}
USGBuzzCommand::USGBuzzCommand(const FSGBuzzCommandImpl& BuzzCommandImpl)
: USGFingerCommand(BuzzCommandImpl),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGFingerCommand(BuzzCommandImpl)
{
Pimpl->SyncUProperties();
}
USGBuzzCommand::USGBuzzCommand(TSharedRef<FSGBuzzCommandImpl> BuzzCommandImpl)
: USGFingerCommand(MoveTemp(BuzzCommandImpl)),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGFingerCommand(MoveTemp(BuzzCommandImpl))
{
Pimpl->SyncUProperties();
}
USGBuzzCommand::~USGBuzzCommand() = default;
TSharedRef<FSGBuzzCommandImpl> USGBuzzCommand::ToBuzzCommandImpl() const
{
SyncImplObject();
return FSGFingerCommandImplCast::ToBuzzCommandImpl(ToFingerCommandImpl());
}
void USGBuzzCommand::SyncImplObject() const
{
Super::SyncImplObject();
Pimpl->SyncImplObject();
}
void USGBuzzCommand::SyncUProperties()
{
Super::SyncUProperties();
Pimpl->SyncUProperties();
}
USGBuzzCommand* USGBuzzCommand::Copy(UObject* Outer) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGBuzzCommandImpl InstanceContainer{ToBuzzCommandImpl()};
FSGIC_FSGBuzzCommandImpl OutBuzzCommandImplContainer;
SGCoreImpl_FSGBuzzCommandImpl_Copy(&InstanceContainer, &OutBuzzCommandImplContainer);
@@ -259,31 +172,9 @@ USGBuzzCommand* USGBuzzCommand::Copy(UObject* Outer) const
USGBuzzCommand* USGBuzzCommand::Merge(UObject* Outer, const USGBuzzCommand* BuzzCommand) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGBuzzCommandImpl InstanceContainer{ToBuzzCommandImpl()};
FSGIC_FSGBuzzCommandImpl BuzzCommandImplContainer{BuzzCommand->ToBuzzCommandImpl().Get()};
FSGIC_FSGBuzzCommandImpl OutBuzzCommandImplContainer;
SGCoreImpl_FSGBuzzCommandImpl_Merge(&InstanceContainer, &OutBuzzCommandImplContainer, &BuzzCommandImplContainer);
return NewBuzzCommand(Outer, MoveTemp(OutBuzzCommandImplContainer.BuzzCommandImpl));
}
USGBuzzCommand::FImpl::FImpl(USGBuzzCommand* InOwner)
: Owner(InOwner)
{
}
USGBuzzCommand::FImpl::~FImpl() = default;
void USGBuzzCommand::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGBuzzCommand::FImpl::SyncUProperties()
{
}
void USGBuzzCommand::FImpl::SyncImplObject()
{
}
@@ -69,14 +69,6 @@ struct USGCalibrationDataPoint::FImpl
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGCalibrationDataPoint* USGCalibrationDataPoint::NewCalibrationDataPoint(
@@ -107,27 +99,16 @@ USGCalibrationDataPoint* USGCalibrationDataPoint::NewCalibrationDataPoint(
}
USGCalibrationDataPoint::USGCalibrationDataPoint()
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGCalibrationDataPointImpl OutCalibrationDataPointImplContainer;
SGCoreImpl_FSGCalibrationDataPointImpl_ctor(&OutCalibrationDataPointImplContainer);
Pimpl->CalibrationDataPointImpl = MoveTemp(OutCalibrationDataPointImplContainer.CalibrationDataPointImpl);
Pimpl->SyncUProperties();
}
USGCalibrationDataPoint::USGCalibrationDataPoint(const int32 CurrentStage, const TArray<FVector>& CalibrationValues)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGCalibrationDataPointImpl OutCalibrationDataPointImplContainer;
FSGIC_TArray_FVector CalibrationValuesContainer{CalibrationValues};
@@ -135,19 +116,12 @@ USGCalibrationDataPoint::USGCalibrationDataPoint(const int32 CurrentStage, const
&OutCalibrationDataPointImplContainer, CurrentStage, &CalibrationValuesContainer);
Pimpl->CalibrationDataPointImpl = MoveTemp(OutCalibrationDataPointImplContainer.CalibrationDataPointImpl);
Pimpl->SyncUProperties();
}
USGCalibrationDataPoint::USGCalibrationDataPoint(const FSGCalibrationDataPointImpl& CalibrationDataPointImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
SetCalibrationDataPointImpl(CalibrationDataPointImpl);
Pimpl->SyncUProperties();
}
USGCalibrationDataPoint::~USGCalibrationDataPoint() = default;
@@ -162,7 +136,6 @@ void USGCalibrationDataPoint::SetCalibrationDataPointImpl(const FSGCalibrationDa
const FSGCalibrationDataPointImpl& USGCalibrationDataPoint::ToCalibrationDataPointImpl() const
{
Pimpl->SyncImplObject();
return Pimpl->CalibrationDataPointImpl;
}
@@ -200,11 +173,3 @@ void USGCalibrationDataPoint::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGCalibrationDataPoint::FImpl::SyncUProperties()
{
}
void USGCalibrationDataPoint::FImpl::SyncImplObject()
{
}
+11 -140
View File
@@ -85,14 +85,6 @@ struct USGDevice::FImpl
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
void USGDevice::ParseFirmware(const FString& RawFirmware, int32& OutMainVersion, int32& OutSubVersion)
@@ -110,43 +102,26 @@ FString USGDevice::ToString(const ESGDeviceType DeviceType)
}
USGDevice::USGDevice()
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_TSharedPtr_FSGDeviceImpl OutSharedPtrContainer;
SGCoreImpl_FSGDeviceImpl_ctor_MakeShared(&OutSharedPtrContainer);
Pimpl->SGDeviceImpl = MoveTemp(OutSharedPtrContainer.Ptr);
Pimpl->SyncUProperties();
}
USGDevice::USGDevice(const FSGDeviceImpl& SGDeviceImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_TSharedPtr_FSGDeviceImpl OutSharedPtrContainer;
FSGIC_FSGDeviceImpl RhsContainer{SGDeviceImpl};
SGCoreImpl_FSGDeviceImpl_ctor_copy_MakeShared(&OutSharedPtrContainer, &RhsContainer);
Pimpl->SGDeviceImpl = MoveTemp(OutSharedPtrContainer.Ptr);
Pimpl->SyncUProperties();
}
USGDevice::USGDevice(const FSGBetaDeviceImpl& BetaDeviceImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_TSharedPtr_FSGBetaDeviceImpl OutSharedPtrContainer;
FSGIC_FSGBetaDeviceImpl RhsContainer{BetaDeviceImpl};
@@ -156,111 +131,63 @@ USGDevice::USGDevice(const FSGBetaDeviceImpl& BetaDeviceImpl)
}
USGDevice::USGDevice(const FSGHapticGloveImpl& HapticGloveImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_TSharedPtr_FSGHapticGloveImpl OutSharedPtrContainer;
FSGIC_FSGHapticGloveImpl RhsContainer{HapticGloveImpl};
SGCoreImpl_FSGHapticGloveImpl_ctor_copy_MakeShared(&OutSharedPtrContainer, &RhsContainer);
Pimpl->SGDeviceImpl = MoveTemp(OutSharedPtrContainer.Ptr);
Pimpl->SyncUProperties();
}
USGDevice::USGDevice(const FSGNovaGloveImpl& NovaGloveImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_TSharedPtr_FSGNovaGloveImpl OutSharedPtrContainer;
FSGIC_FSGNovaGloveImpl RhsContainer{NovaGloveImpl};
SGCoreImpl_FSGNovaGloveImpl_ctor_copy_MakeShared(&OutSharedPtrContainer, &RhsContainer);
Pimpl->SGDeviceImpl = MoveTemp(OutSharedPtrContainer.Ptr);
Pimpl->SyncUProperties();
}
USGDevice::USGDevice(const FSGSenseGloveImpl& SenseGloveImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_TSharedPtr_FSGSenseGloveImpl OutSharedPtrContainer;
FSGIC_FSGSenseGloveImpl RhsContainer{SenseGloveImpl};
SGCoreImpl_FSGSenseGloveImpl_ctor_copy_MakeShared(&OutSharedPtrContainer, &RhsContainer);
Pimpl->SGDeviceImpl = MoveTemp(OutSharedPtrContainer.Ptr);
Pimpl->SyncUProperties();
}
USGDevice::USGDevice(TSharedRef<FSGDeviceImpl> SGDeviceImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->SGDeviceImpl = MoveTemp(SGDeviceImpl);
Pimpl->SyncUProperties();
}
USGDevice::USGDevice(TSharedRef<FSGBetaDeviceImpl> BetaDeviceImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->SGDeviceImpl = MoveTemp(BetaDeviceImpl);
Pimpl->SyncUProperties();
}
USGDevice::USGDevice(TSharedRef<FSGHapticGloveImpl> HapticGloveImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->SGDeviceImpl = MoveTemp(HapticGloveImpl);
Pimpl->SyncUProperties();
}
USGDevice::USGDevice(TSharedRef<FSGNovaGloveImpl> NovaGloveImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->SGDeviceImpl = MoveTemp(NovaGloveImpl);
Pimpl->SyncUProperties();
}
USGDevice::USGDevice(TSharedRef<FSGSenseGloveImpl> SenseGloveImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->SGDeviceImpl = MoveTemp(SenseGloveImpl);
Pimpl->SyncUProperties();
}
USGDevice::~USGDevice() = default;
@@ -332,24 +259,11 @@ void USGDevice::SetSGDeviceImpl(TSharedRef<FSGSenseGloveImpl> SenseGloveImpl)
TSharedRef<FSGDeviceImpl> USGDevice::ToSGDeviceImpl() const
{
SyncImplObject();
return Pimpl->SGDeviceImpl.ToSharedRef();
}
void USGDevice::SyncImplObject() const
{
Pimpl->SyncImplObject();
}
void USGDevice::SyncUProperties()
{
Pimpl->SyncUProperties();
}
ESGDeviceType USGDevice::GetDeviceType() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()};
FSGIC_ESGDeviceType OutTypeContainer;
SGCoreImpl_FSGDeviceImpl_GetDeviceType(&InstanceContainer, &OutTypeContainer);
@@ -358,16 +272,12 @@ ESGDeviceType USGDevice::GetDeviceType() const
int32 USGDevice::GetSubFirmwareVersion() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()};
return SGCoreImpl_FSGDeviceImpl_GetSubFirmwareVersion(&InstanceContainer);
}
FString USGDevice::GetFirmwareString() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGDeviceImpl_GetFirmwareString(&InstanceContainer, &OutStringContainer);
@@ -376,8 +286,6 @@ FString USGDevice::GetFirmwareString() const
FString USGDevice::GetAddress() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()};
FSGIC_FString AddressContainer;
SGCoreImpl_FSGDeviceImpl_GetAddress(&InstanceContainer, &AddressContainer);
@@ -386,16 +294,12 @@ FString USGDevice::GetAddress() const
bool USGDevice::IsConnected() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()};
return SGCoreImpl_FSGDeviceImpl_IsConnected(&InstanceContainer);
}
ESGConnectionType USGDevice::GetConnectionType() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()};
FSGIC_ESGConnectionType OutTypeContainer;
SGCoreImpl_FSGDeviceImpl_GetConnectionType(&InstanceContainer, &OutTypeContainer);
@@ -404,82 +308,57 @@ ESGConnectionType USGDevice::GetConnectionType() const
int32 USGDevice::PacketsPerSecondReceived() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()};
return SGCoreImpl_FSGDeviceImpl_PacketsPerSecondReceived(&InstanceContainer);
}
int32 USGDevice::PacketsPerSecondSent() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()};
return SGCoreImpl_FSGDeviceImpl_PacketsPerSecondSent(&InstanceContainer);
}
int32 USGDevice::GetDeviceIndex() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()};
return SGCoreImpl_FSGDeviceImpl_GetDeviceIndex(&InstanceContainer);
}
void USGDevice::SetDeviceIndex(const int32 NewIndex)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()};
SGCoreImpl_FSGDeviceImpl_SetDeviceIndex(&InstanceContainer, NewIndex);
SyncUProperties();
}
bool USGDevice::IsWireless() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()};
return SGCoreImpl_FSGDeviceImpl_IsWireless(&InstanceContainer);
}
bool USGDevice::HasBattery() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()};
return SGCoreImpl_FSGDeviceImpl_HasBattery(&InstanceContainer);
}
bool USGDevice::IsCharging()
{
SyncImplObject();
FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()};
const bool bResult = SGCoreImpl_FSGDeviceImpl_IsCharging(&InstanceContainer);
SyncUProperties();
return bResult;
}
bool USGDevice::GetBatteryLevel(float& OutLevel)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()};
const bool bResult = SGCoreImpl_FSGDeviceImpl_GetBatteryLevel(&InstanceContainer, &OutLevel);
SyncUProperties();
return bResult;
}
FString USGDevice::ToString() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGDeviceImpl_ToString(&InstanceContainer, &OutStringContainer);
@@ -497,11 +376,3 @@ void USGDevice::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGDevice::FImpl::SyncUProperties()
{
}
void USGDevice::FImpl::SyncImplObject()
{
}
@@ -69,13 +69,6 @@ struct USGDeviceModel::FImpl
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGDeviceModel* USGDeviceModel::NewDeviceModel(UObject* Outer, const FSGDeviceModelImpl& DeviceModelImpl)
@@ -120,28 +113,17 @@ void USGDeviceModel::ParseFirmware(const FString& RawFirmware, int32& OutMainVer
}
USGDeviceModel::USGDeviceModel()
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGDeviceModelImpl OutDeviceModelImplContainer;
SGCoreImpl_FSGDeviceModelImpl_ctor(&OutDeviceModelImplContainer);
Pimpl->DeviceModelImpl = MoveTemp(OutDeviceModelImplContainer.DeviceModelImpl);
Pimpl->SyncUProperties();
}
USGDeviceModel::USGDeviceModel(const FString& Id, const FString& HardwareVersion,
const int32 FirmwareVersion, const int32 SubFirmwareVersion)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGDeviceModelImpl OutDeviceModelImplContainer;
FSGIC_FString IdContainer{Id};
@@ -150,19 +132,12 @@ USGDeviceModel::USGDeviceModel(const FString& Id, const FString& HardwareVersion
&OutDeviceModelImplContainer, &IdContainer, &HardwareVersionContainer, FirmwareVersion, SubFirmwareVersion);
Pimpl->DeviceModelImpl = MoveTemp(OutDeviceModelImplContainer.DeviceModelImpl);
Pimpl->SyncUProperties();
}
USGDeviceModel::USGDeviceModel(const FSGDeviceModelImpl& DeviceModelImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
SetDeviceModelImpl(DeviceModelImpl);
Pimpl->SyncUProperties();
}
USGDeviceModel::~USGDeviceModel() = default;
@@ -177,13 +152,11 @@ void USGDeviceModel::SetDeviceModelImpl(const FSGDeviceModelImpl& DeviceModelImp
const FSGDeviceModelImpl& USGDeviceModel::ToDeviceModelImpl() const
{
Pimpl->SyncImplObject();
return Pimpl->DeviceModelImpl;
}
FSGDeviceModelImpl& USGDeviceModel::ToDeviceModelImpl()
{
Pimpl->SyncImplObject();
return Pimpl->DeviceModelImpl;
}
@@ -226,11 +199,3 @@ void USGDeviceModel::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGDeviceModel::FImpl::SyncUProperties()
{
}
void USGDeviceModel::FImpl::SyncImplObject()
{
}
@@ -76,54 +76,29 @@ struct USGFingerCommand::FImpl
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGFingerCommand::USGFingerCommand()
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_TSharedPtr_FSGFingerCommandImpl OutSharedPtrContainer;
SGCoreImpl_FSGFingerCommandImpl_ctor_MakeShared(&OutSharedPtrContainer);
Pimpl->FingerCommandImpl = MoveTemp(OutSharedPtrContainer.Ptr);
Pimpl->SyncUProperties();
}
USGFingerCommand::USGFingerCommand(const TArray<int32>& InLevels)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_TSharedPtr_FSGFingerCommandImpl OutSharedPtrContainer;
FSGIC_TArray_int32 LevelsContainer{InLevels};
SGCoreImpl_FSGFingerCommandImpl_ctor_Levels_MakeShared(&OutSharedPtrContainer, &LevelsContainer);
Pimpl->FingerCommandImpl = MoveTemp(OutSharedPtrContainer.Ptr);
Pimpl->SyncUProperties();
}
USGFingerCommand::USGFingerCommand(const FSGFingerCommandImpl& FingerCommandImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_TSharedPtr_FSGFingerCommandImpl OutSharedPtrContainer;
FSGIC_FSGFingerCommandImpl RhsContainer{FingerCommandImpl};
@@ -131,16 +106,10 @@ USGFingerCommand::USGFingerCommand(const FSGFingerCommandImpl& FingerCommandImpl
&OutSharedPtrContainer, &RhsContainer);
Pimpl->FingerCommandImpl = MoveTemp(OutSharedPtrContainer.Ptr);
Pimpl->SyncUProperties();
}
USGFingerCommand::USGFingerCommand(const FSGBuzzCommandImpl& BuzzCommandImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_TSharedPtr_FSGBuzzCommandImpl OutSharedPtrContainer;
FSGIC_FSGBuzzCommandImpl RhsContainer{BuzzCommandImpl};
@@ -148,16 +117,10 @@ USGFingerCommand::USGFingerCommand(const FSGBuzzCommandImpl& BuzzCommandImpl)
&OutSharedPtrContainer, &RhsContainer);
Pimpl->FingerCommandImpl = MoveTemp(OutSharedPtrContainer.Ptr);
Pimpl->SyncUProperties();
}
USGFingerCommand::USGFingerCommand(const FSGForceFeedbackCommandImpl& ForceFeedbackCommandImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_TSharedPtr_FSGForceFeedbackCommandImpl OutSharedPtrContainer;
FSGIC_FSGForceFeedbackCommandImpl RhsContainer{ForceFeedbackCommandImpl};
@@ -165,16 +128,10 @@ USGFingerCommand::USGFingerCommand(const FSGForceFeedbackCommandImpl& ForceFeedb
&OutSharedPtrContainer, &RhsContainer);
Pimpl->FingerCommandImpl = MoveTemp(OutSharedPtrContainer.Ptr);
Pimpl->SyncUProperties();
}
USGFingerCommand::USGFingerCommand(const FSGTimedBuzzCommandImpl& TimedBuzzCommandImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_TSharedPtr_FSGTimedBuzzCommandImpl OutSharedPtrContainer;
FSGIC_FSGTimedBuzzCommandImpl RhsContainer{TimedBuzzCommandImpl};
@@ -182,55 +139,30 @@ USGFingerCommand::USGFingerCommand(const FSGTimedBuzzCommandImpl& TimedBuzzComma
&OutSharedPtrContainer, &RhsContainer);
Pimpl->FingerCommandImpl = MoveTemp(OutSharedPtrContainer.Ptr);
Pimpl->SyncUProperties();
}
USGFingerCommand::USGFingerCommand(TSharedRef<FSGFingerCommandImpl> FingerCommandImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->FingerCommandImpl = MoveTemp(FingerCommandImpl);
Pimpl->SyncUProperties();
}
USGFingerCommand::USGFingerCommand(TSharedRef<FSGBuzzCommandImpl> BuzzCommandImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->FingerCommandImpl = MoveTemp(BuzzCommandImpl);
Pimpl->SyncUProperties();
}
USGFingerCommand::USGFingerCommand(TSharedRef<FSGForceFeedbackCommandImpl> ForceFeedbackCommandImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->FingerCommandImpl = MoveTemp(ForceFeedbackCommandImpl);
Pimpl->SyncUProperties();
}
USGFingerCommand::USGFingerCommand(TSharedRef<FSGTimedBuzzCommandImpl> TimedBuzzCommandImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->FingerCommandImpl = MoveTemp(TimedBuzzCommandImpl);
Pimpl->SyncUProperties();
}
USGFingerCommand::~USGFingerCommand() = default;
@@ -289,20 +221,9 @@ void USGFingerCommand::SetFingerCommandImpl(TSharedRef<FSGTimedBuzzCommandImpl>
TSharedRef<FSGFingerCommandImpl> USGFingerCommand::ToFingerCommandImpl() const
{
SyncImplObject();
return Pimpl->FingerCommandImpl.ToSharedRef();
}
void USGFingerCommand::SyncImplObject() const
{
Pimpl->SyncImplObject();
}
void USGFingerCommand::SyncUProperties()
{
Pimpl->SyncUProperties();
}
TArray<int32> USGFingerCommand::GetLevels() const
{
FSGIC_TSharedPtr_FSGFingerCommandImpl InstanceContainer{ToFingerCommandImpl()};
@@ -313,28 +234,19 @@ TArray<int32> USGFingerCommand::GetLevels() const
int32 USGFingerCommand::GetLevel(const int32 Finger) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGFingerCommandImpl InstanceContainer{ToFingerCommandImpl()};
const int32 Level = SGCoreImpl_FSGFingerCommandImpl_GetLevel(&InstanceContainer, Finger);
return Level;
}
void USGFingerCommand::SetLevel(const int32 Finger, const int32 Value)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGFingerCommandImpl InstanceContainer{ToFingerCommandImpl()};
SGCoreImpl_FSGFingerCommandImpl_SetLevel(&InstanceContainer, Finger, Value);
SyncUProperties();
}
bool USGFingerCommand::Equals(const USGFingerCommand* FingerCommand) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGFingerCommandImpl InstanceContainer{ToFingerCommandImpl()};
FSGIC_FSGFingerCommandImpl FingerCommandImplContainer{FingerCommand->ToFingerCommandImpl().Get()};
const bool bEquals = SGCoreImpl_FSGFingerCommandImpl_Equals(&InstanceContainer, &FingerCommandImplContainer);
@@ -343,8 +255,6 @@ bool USGFingerCommand::Equals(const USGFingerCommand* FingerCommand) const
FString USGFingerCommand::ToString() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGFingerCommandImpl InstanceContainer{ToFingerCommandImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGFingerCommandImpl_ToString(&InstanceContainer, &OutStringContainer);
@@ -362,11 +272,3 @@ void USGFingerCommand::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGFingerCommand::FImpl::SyncUProperties()
{
}
void USGFingerCommand::FImpl::SyncImplObject()
{
}
@@ -42,42 +42,6 @@
#include "SGInterop/SGIC_TArray_int32.h"
#include "SGInterop/SGIC_TSharedPtr_FSGForceFeedbackCommandImpl.h"
struct USGForceFeedbackCommand::FImpl
{
/************************
* Member variables
************************/
/************************
* Owner object
************************/
USGForceFeedbackCommand* Owner;
/************************
* Constructor / Destructor
************************/
explicit FImpl(USGForceFeedbackCommand* InOwner);
~FImpl();
/************************
* Default copy constructor & copy assignment operator
************************/
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGForceFeedbackCommand* USGForceFeedbackCommand::NewForceFeedbackCommand(UObject* Outer,
const FSGForceFeedbackCommandImpl&
ForceFeedbackCommandImpl)
@@ -144,27 +108,16 @@ USGForceFeedbackCommand* USGForceFeedbackCommand::Off(UObject* Outer)
}
USGForceFeedbackCommand::USGForceFeedbackCommand()
: USGFingerCommand(),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGFingerCommand()
{
FSGIC_TSharedPtr_FSGForceFeedbackCommandImpl OutSharedPtrContainer;
SGCoreImpl_FSGForceFeedbackCommandImpl_ctor_MakeShared(&OutSharedPtrContainer);
SetFingerCommandImpl(OutSharedPtrContainer.Ptr.ToSharedRef());
Pimpl->SyncUProperties();
}
USGForceFeedbackCommand::USGForceFeedbackCommand(const TArray<int32>& ForceFeedbackLevels)
: USGFingerCommand(ForceFeedbackLevels),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGFingerCommand(ForceFeedbackLevels)
{
FSGIC_TSharedPtr_FSGForceFeedbackCommandImpl OutSharedPtrContainer;
FSGIC_TArray_int32 ForceFeedbackLevelsContainer{ForceFeedbackLevels};
@@ -172,33 +125,21 @@ USGForceFeedbackCommand::USGForceFeedbackCommand(const TArray<int32>& ForceFeedb
&OutSharedPtrContainer, &ForceFeedbackLevelsContainer);
SetFingerCommandImpl(OutSharedPtrContainer.Ptr.ToSharedRef());
Pimpl->SyncUProperties();
}
USGForceFeedbackCommand::USGForceFeedbackCommand(
const int32 Thumb, const int32 Index, const int32 Middle, const int32 Ring, const int32 Pinky)
: USGFingerCommand(),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGFingerCommand()
{
FSGIC_TSharedPtr_FSGForceFeedbackCommandImpl OutSharedPtrContainer;
SGCoreImpl_FSGForceFeedbackCommandImpl_ctor_Thumb_Index_Middle_Ring_Pinky_MakeShared(
&OutSharedPtrContainer, Thumb, Index, Middle, Ring, Pinky);
SetFingerCommandImpl(OutSharedPtrContainer.Ptr.ToSharedRef());
Pimpl->SyncUProperties();
}
USGForceFeedbackCommand::USGForceFeedbackCommand(const ESGFinger Finger, const int32 BuzzLevel)
: USGFingerCommand(),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGFingerCommand()
{
FSGIC_TSharedPtr_FSGForceFeedbackCommandImpl OutSharedPtrContainer;
FSGIC_ESGFinger FingerContainer{Finger};
@@ -206,55 +147,27 @@ USGForceFeedbackCommand::USGForceFeedbackCommand(const ESGFinger Finger, const i
&OutSharedPtrContainer, &FingerContainer, BuzzLevel);
SetFingerCommandImpl(OutSharedPtrContainer.Ptr.ToSharedRef());
Pimpl->SyncUProperties();
}
USGForceFeedbackCommand::USGForceFeedbackCommand(const FSGForceFeedbackCommandImpl& ForceFeedbackCommandImpl)
: USGFingerCommand(ForceFeedbackCommandImpl),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGFingerCommand(ForceFeedbackCommandImpl)
{
Pimpl->SyncUProperties();
}
USGForceFeedbackCommand::USGForceFeedbackCommand(TSharedRef<FSGForceFeedbackCommandImpl> ForceFeedbackCommandImpl)
: USGFingerCommand(MoveTemp(ForceFeedbackCommandImpl)),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGFingerCommand(MoveTemp(ForceFeedbackCommandImpl))
{
Pimpl->SyncUProperties();
}
USGForceFeedbackCommand::~USGForceFeedbackCommand() = default;
TSharedRef<FSGForceFeedbackCommandImpl> USGForceFeedbackCommand::ToForceFeedbackCommandImpl() const
{
SyncImplObject();
return FSGFingerCommandImplCast::ToForceFeedbackCommandImpl(ToFingerCommandImpl());
}
void USGForceFeedbackCommand::SyncImplObject() const
{
Super::SyncImplObject();
Pimpl->SyncImplObject();
}
void USGForceFeedbackCommand::SyncUProperties()
{
Super::SyncUProperties();
Pimpl->SyncUProperties();
}
USGForceFeedbackCommand* USGForceFeedbackCommand::Copy(UObject* Outer) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGForceFeedbackCommandImpl InstanceContainer{ToForceFeedbackCommandImpl()};
FSGIC_FSGForceFeedbackCommandImpl OutForceFeedbackCommandImplContainer;
SGCoreImpl_FSGForceFeedbackCommandImpl_Copy(&InstanceContainer, &OutForceFeedbackCommandImplContainer);
@@ -264,8 +177,6 @@ USGForceFeedbackCommand* USGForceFeedbackCommand::Copy(UObject* Outer) const
USGForceFeedbackCommand* USGForceFeedbackCommand::Merge(UObject* Outer,
const USGForceFeedbackCommand* ForceFeedbackCommand) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGForceFeedbackCommandImpl InstanceContainer{ToForceFeedbackCommandImpl()};
FSGIC_FSGForceFeedbackCommandImpl ForceFeedbackCommandImplContainer{
ForceFeedbackCommand->ToForceFeedbackCommandImpl().Get()};
@@ -274,23 +185,3 @@ USGForceFeedbackCommand* USGForceFeedbackCommand::Merge(UObject* Outer,
&ForceFeedbackCommandImplContainer);
return NewForceFeedbackCommand(Outer, MoveTemp(OutForceFeedbackCommandImplContainer.ForceFeedbackCommandImpl));
}
USGForceFeedbackCommand::FImpl::FImpl(USGForceFeedbackCommand* InOwner)
: Owner(InOwner)
{
}
USGForceFeedbackCommand::FImpl::~FImpl() = default;
void USGForceFeedbackCommand::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGForceFeedbackCommand::FImpl::SyncUProperties()
{
}
void USGForceFeedbackCommand::FImpl::SyncImplObject()
{
}
@@ -81,13 +81,6 @@ struct USGHandInterpolator::FImpl
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGHandInterpolator* USGHandInterpolator::NewHandInterpolator(
@@ -256,27 +249,16 @@ TArray<TArray<FVector>> USGHandInterpolator::InterpolateHandAngles(const USGHand
}
USGHandInterpolator::USGHandInterpolator()
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGHandInterpolatorImpl OutHandInterpolatorImplContainer;
SGCoreImpl_FSGHandInterpolatorImpl_ctor(&OutHandInterpolatorImplContainer);
Pimpl->HandInterpolatorImpl = MoveTemp(OutHandInterpolatorImplContainer.HandInterpolatorImpl);
Pimpl->SyncUProperties();
}
USGHandInterpolator::USGHandInterpolator(const TArray<TArray<USGInterpolationSet*>>& JointInterpolations)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGHandInterpolatorImpl OutHandInterpolatorImplContainer;
FSGIC_TArray_TArray_FSGInterpolationSetImpl JointInterpolationsContainer{
@@ -286,16 +268,10 @@ USGHandInterpolator::USGHandInterpolator(const TArray<TArray<USGInterpolationSet
&JointInterpolationsContainer);
Pimpl->HandInterpolatorImpl = MoveTemp(OutHandInterpolatorImplContainer.HandInterpolatorImpl);
Pimpl->SyncUProperties();
}
USGHandInterpolator::USGHandInterpolator(const TArray<FSGInterpolationSetArray>& JointInterpolations)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGHandInterpolatorImpl OutHandInterpolatorImplContainer;
FSGIC_TArray_TArray_FSGInterpolationSetImpl JointInterpolationsContainer{
@@ -308,17 +284,11 @@ USGHandInterpolator::USGHandInterpolator(const TArray<FSGInterpolationSetArray>&
&JointInterpolationsContainer);
Pimpl->HandInterpolatorImpl = MoveTemp(OutHandInterpolatorImplContainer.HandInterpolatorImpl);
Pimpl->SyncUProperties();
}
USGHandInterpolator::USGHandInterpolator(const TArray<TArray<USGInterpolationSet*>>& JointInterpolations,
const FQuat& CmcStartRotation)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGHandInterpolatorImpl OutHandInterpolatorImplContainer;
FSGIC_TArray_TArray_FSGInterpolationSetImpl JointInterpolationsContainer{
@@ -329,17 +299,11 @@ USGHandInterpolator::USGHandInterpolator(const TArray<TArray<USGInterpolationSet
&OutHandInterpolatorImplContainer, &JointInterpolationsContainer, &CmcStartRotationContainer);
Pimpl->HandInterpolatorImpl = MoveTemp(OutHandInterpolatorImplContainer.HandInterpolatorImpl);
Pimpl->SyncUProperties();
}
USGHandInterpolator::USGHandInterpolator(const TArray<TArray<USGInterpolationSet*>>& JointInterpolations,
const FRotator& CmcStartRotation)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGHandInterpolatorImpl OutHandInterpolatorImplContainer;
FSGIC_TArray_TArray_FSGInterpolationSetImpl JointInterpolationsContainer{
@@ -350,17 +314,11 @@ USGHandInterpolator::USGHandInterpolator(const TArray<TArray<USGInterpolationSet
&OutHandInterpolatorImplContainer, &JointInterpolationsContainer, &CmcStartRotationContainer);
Pimpl->HandInterpolatorImpl = MoveTemp(OutHandInterpolatorImplContainer.HandInterpolatorImpl);
Pimpl->SyncUProperties();
}
USGHandInterpolator::USGHandInterpolator(const TArray<FSGInterpolationSetArray>& JointInterpolations,
const FQuat& CmcStartRotation)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGHandInterpolatorImpl OutHandInterpolatorImplContainer;
FSGIC_TArray_TArray_FSGInterpolationSetImpl JointInterpolationsContainer{
@@ -374,17 +332,11 @@ USGHandInterpolator::USGHandInterpolator(const TArray<FSGInterpolationSetArray>&
&OutHandInterpolatorImplContainer, &JointInterpolationsContainer, &CmcStartRotationContainer);
Pimpl->HandInterpolatorImpl = MoveTemp(OutHandInterpolatorImplContainer.HandInterpolatorImpl);
Pimpl->SyncUProperties();
}
USGHandInterpolator::USGHandInterpolator(const TArray<FSGInterpolationSetArray>& JointInterpolations,
const FRotator& CmcStartRotation)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGHandInterpolatorImpl OutHandInterpolatorImplContainer;
FSGIC_TArray_TArray_FSGInterpolationSetImpl JointInterpolationsContainer{
@@ -398,19 +350,12 @@ USGHandInterpolator::USGHandInterpolator(const TArray<FSGInterpolationSetArray>&
&OutHandInterpolatorImplContainer, &JointInterpolationsContainer, &CmcStartRotationContainer);
Pimpl->HandInterpolatorImpl = MoveTemp(OutHandInterpolatorImplContainer.HandInterpolatorImpl);
Pimpl->SyncUProperties();
}
USGHandInterpolator::USGHandInterpolator(const FSGHandInterpolatorImpl& HandInterpolatorImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
SetHandInterpolatorImpl(HandInterpolatorImpl);
Pimpl->SyncUProperties();
}
USGHandInterpolator::~USGHandInterpolator() = default;
@@ -425,7 +370,6 @@ void USGHandInterpolator::SetHandInterpolatorImpl(const FSGHandInterpolatorImpl&
const FSGHandInterpolatorImpl& USGHandInterpolator::ToHandInterpolatorImpl() const
{
Pimpl->SyncImplObject();
return Pimpl->HandInterpolatorImpl;
}
@@ -462,8 +406,6 @@ FRotator USGHandInterpolator::GetCmcStartRotation() const
float USGHandInterpolator::CalculateAngle(const ESGFinger Finger, const int32 Movement, const float Value) const
{
Pimpl->SyncImplObject();
FSGIC_FSGHandInterpolatorImpl InstanceContainer{ToHandInterpolatorImpl()};
FSGIC_ESGFinger FingerContainer{Finger};
const float Angle = SGCoreImpl_FSGHandInterpolatorImpl_CalculateAngle_Finger_int32Movement_Value(
@@ -474,8 +416,6 @@ float USGHandInterpolator::CalculateAngle(const ESGFinger Finger, const int32 Mo
float USGHandInterpolator::CalculateAngle(const ESGFinger Finger, const ESGFingerMovement Movement,
const float Value) const
{
Pimpl->SyncImplObject();
FSGIC_FSGHandInterpolatorImpl InstanceContainer{ToHandInterpolatorImpl()};
FSGIC_ESGFinger FingerContainer{Finger};
FSGIC_ESGFingerMovement MovementContainer{Movement};
@@ -487,8 +427,6 @@ float USGHandInterpolator::CalculateAngle(const ESGFinger Finger, const ESGFinge
float USGHandInterpolator::CalculateAngle(const ESGFinger Finger, const ESGThumbMovement Movement,
const float Value) const
{
Pimpl->SyncImplObject();
FSGIC_FSGHandInterpolatorImpl InstanceContainer{ToHandInterpolatorImpl()};
FSGIC_ESGFinger FingerContainer{Finger};
FSGIC_ESGThumbMovement MovementContainer{Movement};
@@ -500,48 +438,34 @@ float USGHandInterpolator::CalculateAngle(const ESGFinger Finger, const ESGThumb
void USGHandInterpolator::SetInterpolation(const int32 Finger, const int32 Movement, const float InputAt0,
const float InputAt1, const float AngleAt0, const float AngleAt1)
{
Pimpl->SyncImplObject();
FSGIC_FSGHandInterpolatorImpl InstanceContainer{ToHandInterpolatorImpl()};
SGCoreImpl_FSGHandInterpolatorImpl_SetInterpolation_int32Finger_int32Movement_InputAt0_InputAt1_AngleAt0_AngleAt1(
&InstanceContainer, Finger, Movement, InputAt0, InputAt1, AngleAt0, AngleAt1);
Pimpl->SyncUProperties();
}
void USGHandInterpolator::SetInterpolation(const ESGFinger Finger, const ESGFingerMovement Movement,
const float InputAt0, const float InputAt1, const float AngleAt0,
const float AngleAt1)
{
Pimpl->SyncImplObject();
FSGIC_FSGHandInterpolatorImpl InstanceContainer{ToHandInterpolatorImpl()};
FSGIC_ESGFinger FingerContainer{Finger};
FSGIC_ESGFingerMovement MovementContainer{Movement};
SGCoreImpl_FSGHandInterpolatorImpl_SetInterpolation_ESGFinger_ESGFingerMovement_InputAt0_InputAt1_AngleAt0_AngleAt1(
&InstanceContainer, &FingerContainer, &MovementContainer, InputAt0, InputAt1, AngleAt0, AngleAt1);
Pimpl->SyncUProperties();
}
void USGHandInterpolator::SetInterpolation(const ESGThumbMovement Movement, const float InputAt0, const float InputAt1,
const float AngleAt0, const float AngleAt1)
{
Pimpl->SyncImplObject();
FSGIC_FSGHandInterpolatorImpl InstanceContainer{ToHandInterpolatorImpl()};
FSGIC_ESGThumbMovement MovementContainer{Movement};
SGCoreImpl_FSGHandInterpolatorImpl_SetInterpolation_Movement_InputAt0_InputAt1_AngleAt0_AngleAt1(
&InstanceContainer, &MovementContainer, InputAt0, InputAt1, AngleAt0, AngleAt1);
Pimpl->SyncUProperties();
}
USGInterpolationSet* USGHandInterpolator::GetInterpolation(UObject* Outer,
const int32 Finger, const int32 Movement) const
{
Pimpl->SyncImplObject();
FSGIC_FSGHandInterpolatorImpl InstanceContainer{ToHandInterpolatorImpl()};
FSGIC_FSGInterpolationSetImpl OutInterpolationContainer;
SGCoreImpl_FSGHandInterpolatorImpl_GetInterpolation(&InstanceContainer, &OutInterpolationContainer, Finger,
@@ -551,8 +475,6 @@ USGInterpolationSet* USGHandInterpolator::GetInterpolation(UObject* Outer,
bool USGHandInterpolator::Equals(const USGHandInterpolator* HandInterpolator) const
{
Pimpl->SyncImplObject();
FSGIC_FSGHandInterpolatorImpl InstanceContainer{ToHandInterpolatorImpl()};
FSGIC_FSGHandInterpolatorImpl HandInterpolatorContainer{HandInterpolator->ToHandInterpolatorImpl()};
const bool bEquals = SGCoreImpl_FSGHandInterpolatorImpl_Equals(&InstanceContainer, &HandInterpolatorContainer);
@@ -561,8 +483,6 @@ bool USGHandInterpolator::Equals(const USGHandInterpolator* HandInterpolator) co
FString USGHandInterpolator::SGSerialize() const
{
Pimpl->SyncImplObject();
FSGIC_FSGHandInterpolatorImpl InstanceContainer{ToHandInterpolatorImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGHandInterpolatorImpl_Serialize(&InstanceContainer, &OutStringContainer);
@@ -580,11 +500,3 @@ void USGHandInterpolator::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGHandInterpolator::FImpl::SyncUProperties()
{
}
void USGHandInterpolator::FImpl::SyncImplObject()
{
}
@@ -36,7 +36,6 @@
#include "SGCore/SGHandPose.h"
#include "Runtime/Launch/Resources/Version.h"
#include "SGCore/SGRotatorArray.h"
#include "SGCore/SGBasicHandModel.h"
#include "SGCoreImpl/SGExportedFunctions.h"
@@ -48,6 +47,8 @@
#include "SGInterop/SGIC_TArray_float.h"
#include "SGInterop/SGIC_TArray_TArray_FQuat.h"
#include "SGInterop/SGIC_TArray_TArray_FVector.h"
#include "SGTypes/SGRotatorArray.h"
#include "SGUtils/SGArrayUtils.h"
struct USGHandPose::FImpl
{
@@ -76,13 +77,6 @@ struct USGHandPose::FImpl
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGHandPose* USGHandPose::NewHandPose(UObject* Outer, const FSGHandPoseImpl& HandPoseImpl)
@@ -284,29 +278,18 @@ USGHandPose* USGHandPose::Fist(UObject* Outer, const bool bRightHanded)
}
USGHandPose::USGHandPose()
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGHandPoseImpl OutHandPoseImplContainer;
SGCoreImpl_FSGHandPoseImpl_ctor(&OutHandPoseImplContainer);
Pimpl->HandPoseImpl = MoveTemp(OutHandPoseImplContainer.HandPoseImpl);
Pimpl->SyncUProperties();
}
USGHandPose::USGHandPose(const bool bRightHanded,
const TArray<TArray<FVector>>& JointPositions, const TArray<TArray<FQuat>>& JointRotations,
const TArray<TArray<FVector>>& HandAngles)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGHandPoseImpl OutHandPoseImplContainer;
FSGIC_TArray_TArray_FVector JointPositionsContainer{JointPositions};
@@ -317,18 +300,12 @@ USGHandPose::USGHandPose(const bool bRightHanded,
&JointRotationsContainer, &HandAnglesContainer);
Pimpl->HandPoseImpl = MoveTemp(OutHandPoseImplContainer.HandPoseImpl);
Pimpl->SyncUProperties();
}
USGHandPose::USGHandPose(const bool bRightHanded,
const TArray<TArray<FVector>>& JointPositions, const TArray<TArray<FRotator>>& JointRotations,
const TArray<TArray<FVector>>& HandAngles)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGHandPoseImpl OutHandPoseImplContainer;
FSGIC_TArray_TArray_FVector JointPositionsContainer{JointPositions};
@@ -339,18 +316,12 @@ USGHandPose::USGHandPose(const bool bRightHanded,
&JointRotationsContainer, &HandAnglesContainer);
Pimpl->HandPoseImpl = MoveTemp(OutHandPoseImplContainer.HandPoseImpl);
Pimpl->SyncUProperties();
}
USGHandPose::USGHandPose(const bool bRightHanded, const
TArray<FSGVectorArray>& JointPositions, const TArray<FSGQuatArray>& JointRotations,
const TArray<FSGVectorArray>& HandAngles)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGHandPoseImpl OutHandPoseImplContainer;
FSGIC_TArray_TArray_FVector JointPositionsContainer{
@@ -367,18 +338,12 @@ USGHandPose::USGHandPose(const bool bRightHanded, const
&JointRotationsContainer, &HandAnglesContainer);
Pimpl->HandPoseImpl = MoveTemp(OutHandPoseImplContainer.HandPoseImpl);
Pimpl->SyncUProperties();
}
USGHandPose::USGHandPose(const bool bRightHanded,
const TArray<FSGVectorArray>& JointPositions, const TArray<FSGRotatorArray>& JointRotations,
const TArray<FSGVectorArray>& HandAngles)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGHandPoseImpl OutHandPoseImplContainer;
FSGIC_TArray_TArray_FVector JointPositionsContainer{
@@ -395,19 +360,12 @@ USGHandPose::USGHandPose(const bool bRightHanded,
&JointRotationsContainer, &HandAnglesContainer);
Pimpl->HandPoseImpl = MoveTemp(OutHandPoseImplContainer.HandPoseImpl);
Pimpl->SyncUProperties();
}
USGHandPose::USGHandPose(const FSGHandPoseImpl& HandPoseImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
SetHandPoseImpl(HandPoseImpl);
Pimpl->SyncUProperties();
}
USGHandPose::~USGHandPose() = default;
@@ -422,7 +380,6 @@ void USGHandPose::SetHandPoseImpl(const FSGHandPoseImpl& HandPoseImpl)
const FSGHandPoseImpl& USGHandPose::ToHandPoseImpl() const
{
Pimpl->SyncImplObject();
return Pimpl->HandPoseImpl;
}
@@ -466,7 +423,6 @@ TArray<TArray<FVector>> USGHandPose::GetHandAngles() const
bool USGHandPose::Equals(const USGHandPose* HandPose) const
{
Pimpl->SyncImplObject();
FSGIC_FSGHandPoseImpl InstanceContainer{ToHandPoseImpl()};
FSGIC_FSGHandPoseImpl HandPoseContainer{HandPose->ToHandPoseImpl()};
@@ -475,8 +431,6 @@ bool USGHandPose::Equals(const USGHandPose* HandPose) const
float USGHandPose::GetNormalizedFlexion(const ESGFinger Finger, const bool bClamp01) const
{
Pimpl->SyncImplObject();
FSGIC_FSGHandPoseImpl InstanceContainer{ToHandPoseImpl()};
FSGIC_ESGFinger FingerContainer{Finger};
return SGCoreImpl_FSGHandPoseImpl_GetNormalizedFlexion_Finger_bClamp01(
@@ -485,8 +439,6 @@ float USGHandPose::GetNormalizedFlexion(const ESGFinger Finger, const bool bClam
TArray<float> USGHandPose::GetNormalizedFlexion(const bool bClamp01) const
{
Pimpl->SyncImplObject();
FSGIC_FSGHandPoseImpl InstanceContainer{ToHandPoseImpl()};
FSGIC_TArray_float OutFlexionContainer;
SGCoreImpl_FSGHandPoseImpl_GetNormalizedFlexion_bClamp01(&InstanceContainer, &OutFlexionContainer, bClamp01);
@@ -495,8 +447,6 @@ TArray<float> USGHandPose::GetNormalizedFlexion(const bool bClamp01) const
FString USGHandPose::ToString(const bool bShortFormat) const
{
Pimpl->SyncImplObject();
FSGIC_FSGHandPoseImpl InstanceContainer{ToHandPoseImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGHandPoseImpl_ToString(&InstanceContainer, &OutStringContainer, bShortFormat);
@@ -505,8 +455,6 @@ FString USGHandPose::ToString(const bool bShortFormat) const
FString USGHandPose::SGSerialize() const
{
Pimpl->SyncImplObject();
FSGIC_FSGHandPoseImpl InstanceContainer{ToHandPoseImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGHandPoseImpl_Serialize(&InstanceContainer, &OutStringContainer);
@@ -524,11 +472,3 @@ void USGHandPose::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGHandPose::FImpl::SyncUProperties()
{
}
void USGHandPose::FImpl::SyncImplObject()
{
}
@@ -73,13 +73,6 @@ struct USGHandProfile::FImpl
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGHandProfile* USGHandProfile::NewHandProfile(UObject* Outer, const FSGHandProfileImpl& HandProfileImpl)
@@ -186,29 +179,18 @@ void USGHandProfile::ResetCalibration(const bool bOnDisk)
}
USGHandProfile::USGHandProfile()
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGHandProfileImpl OutHandProfileImplContainer;
SGCoreImpl_FSGHandProfileImpl_ctor(&OutHandProfileImplContainer);
Pimpl->HandProfileImpl = MoveTemp(OutHandProfileImplContainer.HandProfileImpl);
Pimpl->SyncUProperties();
}
USGHandProfile::USGHandProfile(const bool bRightHanded,
const USGSenseGloveHandProfile* SenseGloveHandProfile,
const USGNovaGloveHandProfile* NovaGloveHandProfile)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGHandProfileImpl OutHandProfileImplContainer;
FSGIC_FSGSenseGloveHandProfileImpl SenseGloveHandProfileContainer
@@ -219,19 +201,12 @@ USGHandProfile::USGHandProfile(const bool bRightHanded,
&OutHandProfileImplContainer, bRightHanded, &SenseGloveHandProfileContainer, &NovaGloveHandProfileContainer);
Pimpl->HandProfileImpl = MoveTemp(OutHandProfileImplContainer.HandProfileImpl);
Pimpl->SyncUProperties();
}
USGHandProfile::USGHandProfile(const FSGHandProfileImpl& HandProfileImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
SetHandProfileImpl(HandProfileImpl);
Pimpl->SyncUProperties();
}
USGHandProfile::~USGHandProfile() = default;
@@ -246,7 +221,6 @@ void USGHandProfile::SetHandProfileImpl(const FSGHandProfileImpl& HandProfileImp
const FSGHandProfileImpl& USGHandProfile::ToHandProfileImpl() const
{
Pimpl->SyncImplObject();
return Pimpl->HandProfileImpl;
}
@@ -278,8 +252,6 @@ USGNovaGloveHandProfile* USGHandProfile::GetNovaGloveHandProfile(UObject* Outer)
bool USGHandProfile::Equals(const USGHandProfile* HandProfile) const
{
Pimpl->SyncImplObject();
FSGIC_FSGHandProfileImpl InstanceContainer{ToHandProfileImpl()};
FSGIC_FSGHandProfileImpl HandProfileContainer{HandProfile->ToHandProfileImpl()};
return SGCoreImpl_FSGHandProfileImpl_Equals(&InstanceContainer, &HandProfileContainer);
@@ -287,18 +259,12 @@ bool USGHandProfile::Equals(const USGHandProfile* HandProfile) const
void USGHandProfile::Reset()
{
Pimpl->SyncImplObject();
FSGIC_FSGHandProfileImpl InstanceContainer{ToHandProfileImpl()};
SGCoreImpl_FSGHandProfileImpl_Reset(&InstanceContainer);
Pimpl->SyncUProperties();
}
FString USGHandProfile::SGSerialize() const
{
Pimpl->SyncImplObject();
FSGIC_FSGHandProfileImpl InstanceContainer{ToHandProfileImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGHandProfileImpl_Serialize(&InstanceContainer, &OutStringContainer);
@@ -316,11 +282,3 @@ void USGHandProfile::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGHandProfile::FImpl::SyncUProperties()
{
}
void USGHandProfile::FImpl::SyncImplObject()
{
}
@@ -58,42 +58,6 @@
#include "SGInterop/SGIC_TArray_TSharedRef_FSGHapticGloveImpl.h"
#include "SGInterop/SGIC_TSharedPtr_FSGHapticGloveImpl.h"
struct USGHapticGlove::FImpl
{
/************************
* Member variables
************************/
/************************
* Owner object
************************/
USGDevice* Owner;
/************************
* Constructor / Destructor
************************/
explicit FImpl(USGHapticGlove* InOwner);
~FImpl();
/************************
* Default copy constructor & copy assignment operator
************************/
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGHapticGlove* USGHapticGlove::NewHapticGlove(UObject* Outer, const FSGHapticGloveImpl& HapticGloveImpl)
{
USGHapticGlove* Instance = NewObject<USGHapticGlove>(Outer);
@@ -155,132 +119,63 @@ bool USGHapticGlove::GetGlove(UObject* Outer, const bool bRightHanded, USGHaptic
}
USGHapticGlove::USGHapticGlove()
: USGDevice(),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGDevice()
{
FSGIC_TSharedPtr_FSGHapticGloveImpl OutSharedPtrContainer;
SGCoreImpl_FSGBetaDeviceImpl_ctor_MakeShared(&OutSharedPtrContainer);
SetSGDeviceImpl(OutSharedPtrContainer.Ptr.ToSharedRef());
Pimpl->SyncUProperties();
}
USGHapticGlove::USGHapticGlove(const FSGDeviceImpl& SGDeviceImpl)
: USGDevice(SGDeviceImpl),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGDevice(SGDeviceImpl)
{
Pimpl->SyncUProperties();
}
USGHapticGlove::USGHapticGlove(const FSGHapticGloveImpl& HapticGloveImpl)
: USGDevice(HapticGloveImpl),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGDevice(HapticGloveImpl)
{
Pimpl->SyncUProperties();
}
USGHapticGlove::USGHapticGlove(const FSGNovaGloveImpl& NovaGloveImpl)
: USGDevice(NovaGloveImpl),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGDevice(NovaGloveImpl)
{
Pimpl->SyncUProperties();
}
USGHapticGlove::USGHapticGlove(const FSGSenseGloveImpl& SenseGloveImpl)
: USGDevice(SenseGloveImpl),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGDevice(SenseGloveImpl)
{
Pimpl->SyncUProperties();
}
USGHapticGlove::USGHapticGlove(TSharedRef<FSGDeviceImpl> SGDeviceImpl)
: USGDevice(MoveTemp(SGDeviceImpl)),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGDevice(MoveTemp(SGDeviceImpl))
{
Pimpl->SyncUProperties();
}
USGHapticGlove::USGHapticGlove(TSharedRef<FSGHapticGloveImpl> HapticGloveImpl)
: USGDevice(MoveTemp(HapticGloveImpl)),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGDevice(MoveTemp(HapticGloveImpl))
{
Pimpl->SyncUProperties();
}
USGHapticGlove::USGHapticGlove(TSharedRef<FSGNovaGloveImpl> NovaGloveImpl)
: USGDevice(MoveTemp(NovaGloveImpl)),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGDevice(MoveTemp(NovaGloveImpl))
{
Pimpl->SyncUProperties();
}
USGHapticGlove::USGHapticGlove(TSharedRef<FSGSenseGloveImpl> SenseGloveImpl)
: USGDevice(MoveTemp(SenseGloveImpl)),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGDevice(MoveTemp(SenseGloveImpl))
{
Pimpl->SyncUProperties();
}
USGHapticGlove::~USGHapticGlove() = default;
TSharedRef<FSGHapticGloveImpl> USGHapticGlove::ToHapticGloveImpl() const
{
SyncImplObject();
return FSGDeviceImplCast::ToHapticGloveImpl(ToSGDeviceImpl());
}
void USGHapticGlove::SyncImplObject() const
{
Super::SyncImplObject();
Pimpl->SyncImplObject();
}
void USGHapticGlove::SyncUProperties()
{
Super::SyncUProperties();
Pimpl->SyncUProperties();
}
ESGDeviceType USGHapticGlove::GetDeviceType() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
FSGIC_ESGDeviceType OutTypeContainer;
SGCoreImpl_FSGHapticGloveImpl_GetDeviceType(&InstanceContainer, &OutTypeContainer);
@@ -289,8 +184,6 @@ ESGDeviceType USGHapticGlove::GetDeviceType() const
FString USGHapticGlove::GetDeviceId() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
FSGIC_FString OutIdContainer;
SGCoreImpl_FSGHapticGloveImpl_GetDeviceId(&InstanceContainer, &OutIdContainer);
@@ -299,8 +192,6 @@ FString USGHapticGlove::GetDeviceId() const
FString USGHapticGlove::GetHardwareVersion() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
FSGIC_FString OutVersionContainer;
SGCoreImpl_FSGHapticGloveImpl_GetHardwareVersion(&InstanceContainer, &OutVersionContainer);
@@ -309,38 +200,28 @@ FString USGHapticGlove::GetHardwareVersion() const
int32 USGHapticGlove::GetFirmwareVersion() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
return SGCoreImpl_FSGHapticGloveImpl_GetFirmwareVersion(&InstanceContainer);
}
int32 USGHapticGlove::GetSubFirmwareVersion() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
return SGCoreImpl_FSGHapticGloveImpl_GetSubFirmwareVersion(&InstanceContainer);
}
bool USGHapticGlove::IsRight() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
return SGCoreImpl_FSGHapticGloveImpl_IsRight(&InstanceContainer);
}
bool USGHapticGlove::GetImuRotation(FQuat& OutImu)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
FSGIC_FQuat OutImuContainer;
const bool bResult = SGCoreImpl_FSGHapticGloveImpl_GetImuRotation(&InstanceContainer, &OutImuContainer);
SyncUProperties();
if (bResult)
{
OutImu = MoveTemp(OutImuContainer.Quat);
@@ -351,14 +232,10 @@ bool USGHapticGlove::GetImuRotation(FQuat& OutImu)
bool USGHapticGlove::GetImuRotation(FRotator& OutImu)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
FSGIC_FQuat OutImuContainer;
const bool bResult = SGCoreImpl_FSGHapticGloveImpl_GetImuRotation(&InstanceContainer, &OutImuContainer);
SyncUProperties();
if (bResult)
{
OutImu = OutImuContainer.Quat.Rotator();
@@ -371,8 +248,6 @@ bool USGHapticGlove::GetHandPose(
UObject* Outer,
const USGBasicHandModel* HandGeometry, const USGHandProfile* HandProfile, USGHandPose*& OutHandPose)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
FSGIC_FSGBasicHandModelImpl HandGeometryContainer{HandGeometry->ToBasicHandModelImpl()};
FSGIC_FSGHandProfileImpl HandProfileContainer{HandProfile->ToHandProfileImpl()};
@@ -380,8 +255,6 @@ bool USGHapticGlove::GetHandPose(
const bool bResult = SGCoreImpl_FSGHapticGloveImpl_GetHandPose_HandGeometry_HandProfile_OutHandPose(
&InstanceContainer, &HandGeometryContainer, &HandProfileContainer, &OutHandPoseContainer);
SyncUProperties();
if (bResult)
{
OutHandPose = USGHandPose::NewHandPose(Outer, MoveTemp(OutHandPoseContainer.HandPoseImpl));
@@ -392,16 +265,12 @@ bool USGHapticGlove::GetHandPose(
bool USGHapticGlove::GetHandPose(UObject* Outer, const USGHandProfile* HandProfile, USGHandPose*& OutHandPose)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
FSGIC_FSGHandProfileImpl HandProfileContainer{HandProfile->ToHandProfileImpl()};
FSGIC_FSGHandPoseImpl OutHandPoseContainer;
const bool bResult = SGCoreImpl_FSGHapticGloveImpl_GetHandPose_HandProfile_OutHandPose(
&InstanceContainer, &HandProfileContainer, &OutHandPoseContainer);
SyncUProperties();
if (bResult)
{
OutHandPose = USGHandPose::NewHandPose(Outer, MoveTemp(OutHandPoseContainer.HandPoseImpl));
@@ -412,16 +281,12 @@ bool USGHapticGlove::GetHandPose(UObject* Outer, const USGHandProfile* HandProfi
bool USGHapticGlove::GetHandPose(UObject* Outer, const USGBasicHandModel* HandGeometry, USGHandPose*& OutHandPose)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
FSGIC_FSGBasicHandModelImpl HandGeometryContainer{HandGeometry->ToBasicHandModelImpl()};
FSGIC_FSGHandPoseImpl OutHandPoseContainer;
const bool bResult = SGCoreImpl_FSGHapticGloveImpl_GetHandPose_HandGeometry_OutHandPose(
&InstanceContainer, &HandGeometryContainer, &OutHandPoseContainer);
SyncUProperties();
if (bResult)
{
OutHandPose = USGHandPose::NewHandPose(Outer, MoveTemp(OutHandPoseContainer.HandPoseImpl));
@@ -432,15 +297,11 @@ bool USGHapticGlove::GetHandPose(UObject* Outer, const USGBasicHandModel* HandGe
bool USGHapticGlove::GetHandPose(UObject* Outer, USGHandPose*& OutHandPose)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
FSGIC_FSGHandPoseImpl OutHandPoseContainer;
const bool bResult = SGCoreImpl_FSGHapticGloveImpl_GetHandPose_OutHandPose(
&InstanceContainer, &OutHandPoseContainer);
SyncUProperties();
if (bResult)
{
OutHandPose = USGHandPose::NewHandPose(Outer, MoveTemp(OutHandPoseContainer.HandPoseImpl));
@@ -449,81 +310,72 @@ bool USGHapticGlove::GetHandPose(UObject* Outer, USGHandPose*& OutHandPose)
return bResult;
}
#if PLATFORM_ANDROID
bool USGHapticGlove::GetHandPose(UObject* Outer, const float DeltaTime, USGHandPose*& OutHandPose)
{
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
FSGIC_FSGHandPoseImpl OutHandPoseContainer;
const bool bResult = SGCoreImpl_FSGHapticGloveImpl_GetHandPose_DeltaTime_OutHandPose(
&InstanceContainer, DeltaTime, &OutHandPoseContainer);
if (bResult)
{
OutHandPose = USGHandPose::NewHandPose(Outer, MoveTemp(OutHandPoseContainer.HandPoseImpl));
}
return bResult;
}
#endif /* PLATFORM_ANDROID */
void USGHapticGlove::StopHaptics()
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
SGCoreImpl_FSGHapticGloveImpl_StopHaptics(&InstanceContainer);
SyncUProperties();
}
void USGHapticGlove::StopVibrations()
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
SGCoreImpl_FSGHapticGloveImpl_StopVibrations(&InstanceContainer);
SyncUProperties();
}
void USGHapticGlove::SendHaptics(const USGForceFeedbackCommand* ForceFeedbackCommand)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
FSGIC_FSGForceFeedbackCommandImpl ForceFeedbackCommandContainer{
ForceFeedbackCommand->ToForceFeedbackCommandImpl().Get()};
SGCoreImpl_FSGHapticGloveImpl_SendHaptics_ForceFeedbackCommand(&InstanceContainer, &ForceFeedbackCommandContainer);
SyncUProperties();
}
void USGHapticGlove::SendHaptics(const USGBuzzCommand* BuzzCommand)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
FSGIC_FSGBuzzCommandImpl BuzzCommandContainer{BuzzCommand->ToBuzzCommandImpl().Get()};
SGCoreImpl_FSGHapticGloveImpl_SendHaptics_BuzzCommand(&InstanceContainer, &BuzzCommandContainer);
SyncUProperties();
}
void USGHapticGlove::SendHaptics(const USGThumperCommand* ThumperCommand)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
FSGIC_FSGThumperCommandImpl ThumperCommandContainer{ThumperCommand->ToThumperCommandImpl()};
SGCoreImpl_FSGHapticGloveImpl_SendHaptics_ThumperCommand(&InstanceContainer, &ThumperCommandContainer);
SyncUProperties();
}
void USGHapticGlove::SendHaptics(const USGForceFeedbackCommand* ForceFeedbackCommand,
const USGBuzzCommand* BuzzCommand)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
FSGIC_FSGForceFeedbackCommandImpl ForceFeedbackCommandContainer{
ForceFeedbackCommand->ToForceFeedbackCommandImpl().Get()};
FSGIC_FSGBuzzCommandImpl BuzzCommandContainer{BuzzCommand->ToBuzzCommandImpl().Get()};
SGCoreImpl_FSGHapticGloveImpl_SendHaptics_ForceFeedbackCommand_BuzzCommand(
&InstanceContainer, &ForceFeedbackCommandContainer, &BuzzCommandContainer);
SyncUProperties();
}
void USGHapticGlove::SendHaptics(const USGForceFeedbackCommand* ForceFeedbackCommand,
const USGBuzzCommand* BuzzCommand,
const USGThumperCommand* ThumperCommand)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
FSGIC_FSGForceFeedbackCommandImpl ForceFeedbackCommandContainer{
ForceFeedbackCommand->ToForceFeedbackCommandImpl().Get()};
@@ -531,20 +383,14 @@ void USGHapticGlove::SendHaptics(const USGForceFeedbackCommand* ForceFeedbackCom
FSGIC_FSGThumperCommandImpl ThumperCommandContainer{ThumperCommand->ToThumperCommandImpl()};
SGCoreImpl_FSGHapticGloveImpl_SendHaptics_ForceFeedbackCommand_BuzzCommand_ThumperCommand(
&InstanceContainer, &ForceFeedbackCommandContainer, &BuzzCommandContainer, &ThumperCommandContainer);
SyncUProperties();
}
bool USGHapticGlove::GetCalibrationValues(TArray<FVector>& OutValues)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
FSGIC_TArray_FVector OutValuesContainer;
const bool bResult = SGCoreImpl_FSGHapticGloveImpl_GetCalibrationValues(&InstanceContainer, &OutValuesContainer);
SyncUProperties();
if (bResult)
{
OutValues = MoveTemp(OutValuesContainer.Array);
@@ -555,68 +401,46 @@ bool USGHapticGlove::GetCalibrationValues(TArray<FVector>& OutValues)
void USGHapticGlove::ResetCalibrationRange()
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
SGCoreImpl_FSGHapticGloveImpl_ResetCalibrationRange(&InstanceContainer);
SyncUProperties();
}
void USGHapticGlove::UpdateCalibrationRange()
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
SGCoreImpl_FSGHapticGloveImpl_UpdateCalibrationRange(&InstanceContainer);
SyncUProperties();
}
void USGHapticGlove::UpdateCalibrationRange(const TArray<FVector>& CalibrationValues)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
FSGIC_TArray_FVector CalibrationValuesContainer{CalibrationValues};
SGCoreImpl_FSGHapticGloveImpl_UpdateCalibrationRange_CalibrationValues(
&InstanceContainer, &CalibrationValuesContainer);
SyncUProperties();
}
void USGHapticGlove::GetCalibrationRange(TArray<FVector>& OutMinValues, TArray<FVector>& OutMaxValues)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
FSGIC_TArray_FVector OutMinValuesContainer;
FSGIC_TArray_FVector OutMaxValuesContainer;
SGCoreImpl_FSGHapticGloveImpl_GetCalibrationRange(&InstanceContainer, &OutMinValues, &OutMaxValues);
SyncUProperties();
OutMinValues = MoveTemp(OutMinValuesContainer.Array);
OutMaxValues = MoveTemp(OutMaxValuesContainer.Array);
}
void USGHapticGlove::UpdateCalibration(UObject* Outer, USGHandProfile*& OutProfile)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
FSGIC_FSGHandProfileImpl OutProfileContainer;
SGCoreImpl_FSGHapticGloveImpl_UpdateCalibration(&InstanceContainer, &OutProfileContainer);
SyncUProperties();
OutProfile = USGHandProfile::NewHandProfile(Outer, MoveTemp(OutProfileContainer.HandProfileImpl));
}
void USGHapticGlove::ApplyCalibration(UObject* Outer, USGHandProfile*& OutProfile) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
FSGIC_FSGHandProfileImpl OutProfileContainer;
SGCoreImpl_FSGHapticGloveImpl_ApplyCalibration(&InstanceContainer, &OutProfileContainer);
@@ -628,8 +452,6 @@ void USGHapticGlove::GetWristLocation(const FVector& ReferencePosition, const FQ
const ESGPositionalTrackingHardware TrackingHardware,
FVector& OutWristPosition, FQuat& OutWristRotation) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
FSGIC_FVector ReferencePositionContainer{ReferencePosition};
FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation};
@@ -650,8 +472,6 @@ void USGHapticGlove::GetWristLocation(const FVector& ReferencePosition, const FR
const ESGPositionalTrackingHardware TrackingHardware,
FVector& OutWristPosition, FRotator& OutWristRotation) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
FSGIC_FVector ReferencePositionContainer{ReferencePosition};
FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation.Quaternion()};
@@ -672,8 +492,6 @@ void USGHapticGlove::GetGloveLocation(const FVector& ReferencePosition, const FQ
const ESGPositionalTrackingHardware TrackingHardware,
FVector& OutGlovePosition, FQuat& OutGloveRotation) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
FSGIC_FVector ReferencePositionContainer{ReferencePosition};
FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation};
@@ -695,8 +513,6 @@ void USGHapticGlove::GetGloveLocation(const FVector& ReferencePosition, const FR
const ESGPositionalTrackingHardware TrackingHardware,
FVector& OutGlovePosition, FRotator& OutGloveRotation) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()};
FSGIC_FVector ReferencePositionContainer{ReferencePosition};
FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation.Quaternion()};
@@ -713,23 +529,3 @@ void USGHapticGlove::GetGloveLocation(const FVector& ReferencePosition, const FR
OutGlovePosition = MoveTemp(OutGlovePositionContainer.Vector);
OutGloveRotation = OutGloveRotationContainer.Quat.Rotator();
}
USGHapticGlove::FImpl::FImpl(USGHapticGlove* InOwner)
: Owner(InOwner)
{
}
USGHapticGlove::FImpl::~FImpl() = default;
void USGHapticGlove::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGHapticGlove::FImpl::SyncUProperties()
{
}
void USGHapticGlove::FImpl::SyncImplObject()
{
}
@@ -74,13 +74,6 @@ struct USGHapticGloveCalibrationCheck::FImpl
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGHapticGloveCalibrationCheck* USGHapticGloveCalibrationCheck::NewHapticGloveCalibrationCheck(
@@ -176,28 +169,17 @@ bool USGHapticGloveCalibrationCheck::MatchesLast(const TArray<FVector>& CurrentR
}
USGHapticGloveCalibrationCheck::USGHapticGloveCalibrationCheck()
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGHapticGloveCalibrationCheckImpl OutHapticGloveCalibrationCheckImplContainer;
SGCoreImpl_FSGHapticGloveCalibrationCheckImpl_ctor(&OutHapticGloveCalibrationCheckImplContainer);
Pimpl->HapticGloveCalibrationCheckImpl = MoveTemp(
OutHapticGloveCalibrationCheckImplContainer.HapticGloveCalibrationCheckImpl);
Pimpl->SyncUProperties();
}
USGHapticGloveCalibrationCheck::USGHapticGloveCalibrationCheck(const USGSensorRange* LastCalibrationRange)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGHapticGloveCalibrationCheckImpl OutHapticGloveCalibrationCheckImplContainer;
FSGIC_FSGSensorRangeImpl LastCalibrationRangeContainer{LastCalibrationRange->ToSensorRangeImpl()};
@@ -206,20 +188,13 @@ USGHapticGloveCalibrationCheck::USGHapticGloveCalibrationCheck(const USGSensorRa
Pimpl->HapticGloveCalibrationCheckImpl = MoveTemp(
OutHapticGloveCalibrationCheckImplContainer.HapticGloveCalibrationCheckImpl);
Pimpl->SyncUProperties();
}
USGHapticGloveCalibrationCheck::USGHapticGloveCalibrationCheck(
const FSGHapticGloveCalibrationCheckImpl& HapticGloveCalibrationCheckImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
SetHapticGloveCalibrationCheckImpl(HapticGloveCalibrationCheckImpl);
Pimpl->SyncUProperties();
}
USGHapticGloveCalibrationCheck::~USGHapticGloveCalibrationCheck() = default;
@@ -236,22 +211,11 @@ void USGHapticGloveCalibrationCheck::SetHapticGloveCalibrationCheckImpl(
const FSGHapticGloveCalibrationCheckImpl& USGHapticGloveCalibrationCheck::ToHapticGloveCalibrationCheckImpl() const
{
Pimpl->SyncImplObject();
return Pimpl->HapticGloveCalibrationCheckImpl;
}
USGSensorRange* USGHapticGloveCalibrationCheck::GetLastSensorRange(UObject* Outer) const
{
FSGIC_FSGHapticGloveCalibrationCheckImpl InstanceContainer{ToHapticGloveCalibrationCheckImpl()};
FSGIC_FSGSensorRangeImpl OutLastSensorRangeContainer;
SGCoreImpl_FSGHapticGloveCalibrationCheckImpl_GetLastSensorRange(&InstanceContainer, &OutLastSensorRangeContainer);
return USGSensorRange::NewSensorRange(Outer, MoveTemp(OutLastSensorRangeContainer.SensorRangeImpl));
}
ESGCalibrationStage USGHapticGloveCalibrationCheck::GetCalibrationStage() const
{
Pimpl->SyncImplObject();
FSGIC_FSGHapticGloveCalibrationCheckImpl InstanceContainer{ToHapticGloveCalibrationCheckImpl()};
FSGIC_ESGCalibrationStage OutStageContainer;
SGCoreImpl_FSGHapticGloveCalibrationCheckImpl_GetCalibrationStage(&InstanceContainer, &OutStageContainer);
@@ -261,7 +225,6 @@ ESGCalibrationStage USGHapticGloveCalibrationCheck::GetCalibrationStage() const
bool USGHapticGloveCalibrationCheck::ReachedConclusion() const
{
Pimpl->SyncImplObject();
FSGIC_FSGHapticGloveCalibrationCheckImpl InstanceContainer{ToHapticGloveCalibrationCheckImpl()};
return SGCoreImpl_FSGHapticGloveCalibrationCheckImpl_ReachedConclusion(&InstanceContainer);
@@ -269,26 +232,18 @@ bool USGHapticGloveCalibrationCheck::ReachedConclusion() const
void USGHapticGloveCalibrationCheck::Reset()
{
Pimpl->SyncImplObject();
FSGIC_FSGHapticGloveCalibrationCheckImpl InstanceContainer{ToHapticGloveCalibrationCheckImpl()};
SGCoreImpl_FSGHapticGloveCalibrationCheckImpl_Reset(&InstanceContainer);
Pimpl->SyncUProperties();
}
void USGHapticGloveCalibrationCheck::CheckRange(
const TArray<FVector>& CurrentValues, const float DeltaSeconds, const ESGDeviceType DeviceType)
{
Pimpl->SyncImplObject();
FSGIC_FSGHapticGloveCalibrationCheckImpl InstanceContainer{ToHapticGloveCalibrationCheckImpl()};
FSGIC_TArray_FVector CurrentValuesContainer{CurrentValues};
FSGIC_ESGDeviceType DeviceTypeContainer{DeviceType};
SGCoreImpl_FSGHapticGloveCalibrationCheckImpl_CheckRange(&InstanceContainer, &CurrentValuesContainer,
DeltaSeconds, &DeviceTypeContainer);
Pimpl->SyncUProperties();
}
USGHapticGloveCalibrationCheck::FImpl::FImpl(USGHapticGloveCalibrationCheck* InOwner)
@@ -302,11 +257,3 @@ void USGHapticGloveCalibrationCheck::FImplDeleter::operator()(const FImpl* P) co
{
delete P;
}
void USGHapticGloveCalibrationCheck::FImpl::SyncUProperties()
{
}
void USGHapticGloveCalibrationCheck::FImpl::SyncImplObject()
{
}
@@ -84,14 +84,6 @@ struct USGHapticGloveCalibrationSequence::FImpl
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGHapticGloveCalibrationSequence* USGHapticGloveCalibrationSequence::NewHapticGloveCalibrationSequence(UObject* Outer,
@@ -154,27 +146,16 @@ bool USGHapticGloveCalibrationSequence::CompileProfile(UObject* Outer,
}
USGHapticGloveCalibrationSequence::USGHapticGloveCalibrationSequence()
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_TSharedPtr_FSGHapticGloveCalibrationSequenceImpl OutSharedPtrContainer;
SGCoreImpl_FSGHapticGloveCalibrationSequenceImpl_ctor_MakeShared(&OutSharedPtrContainer);
Pimpl->HapticGloveCalibrationSequenceImpl = MoveTemp(OutSharedPtrContainer.Ptr);
Pimpl->SyncUProperties();
}
USGHapticGloveCalibrationSequence::USGHapticGloveCalibrationSequence(const USGHapticGlove* LinkedGlove)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_TSharedPtr_FSGHapticGloveCalibrationSequenceImpl OutSharedPtrContainer;
FSGIC_TSharedPtr_FSGHapticGloveImpl LinkedGloveContainer{LinkedGlove->ToHapticGloveImpl()};
@@ -182,17 +163,11 @@ USGHapticGloveCalibrationSequence::USGHapticGloveCalibrationSequence(const USGHa
&OutSharedPtrContainer, &LinkedGloveContainer);
Pimpl->HapticGloveCalibrationSequenceImpl = MoveTemp(OutSharedPtrContainer.Ptr);
Pimpl->SyncUProperties();
}
USGHapticGloveCalibrationSequence::USGHapticGloveCalibrationSequence(
const FSGHapticGloveCalibrationSequenceImpl& HapticGloveCalibrationSequenceImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_TSharedPtr_FSGHapticGloveCalibrationSequenceImpl OutSharedPtrContainer;
FSGIC_FSGHapticGloveCalibrationSequenceImpl RhsContainer{HapticGloveCalibrationSequenceImpl};
@@ -200,17 +175,11 @@ USGHapticGloveCalibrationSequence::USGHapticGloveCalibrationSequence(
&OutSharedPtrContainer, &RhsContainer);
Pimpl->HapticGloveCalibrationSequenceImpl = MoveTemp(OutSharedPtrContainer.Ptr);
Pimpl->SyncUProperties();
}
USGHapticGloveCalibrationSequence::USGHapticGloveCalibrationSequence(
const FSGHapticGloveQuickCalibrationImpl& HapticGloveQuickCalibrationImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_TSharedPtr_FSGHapticGloveQuickCalibrationImpl OutSharedPtrContainer;
FSGIC_FSGHapticGloveQuickCalibrationImpl RhsContainer{HapticGloveQuickCalibrationImpl};
@@ -218,33 +187,20 @@ USGHapticGloveCalibrationSequence::USGHapticGloveCalibrationSequence(
&OutSharedPtrContainer, &RhsContainer);
Pimpl->HapticGloveCalibrationSequenceImpl = MoveTemp(OutSharedPtrContainer.Ptr);
Pimpl->SyncUProperties();
}
USGHapticGloveCalibrationSequence::USGHapticGloveCalibrationSequence(
TSharedRef<FSGHapticGloveCalibrationSequenceImpl> HapticGloveCalibrationSequenceImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->HapticGloveCalibrationSequenceImpl = MoveTemp(HapticGloveCalibrationSequenceImpl);
Pimpl->SyncUProperties();
}
USGHapticGloveCalibrationSequence::USGHapticGloveCalibrationSequence(
TSharedRef<FSGHapticGloveQuickCalibrationImpl> HapticGloveQuickCalibrationImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->HapticGloveCalibrationSequenceImpl = MoveTemp(HapticGloveQuickCalibrationImpl);
Pimpl->SyncUProperties();
}
USGHapticGloveCalibrationSequence::~USGHapticGloveCalibrationSequence() = default;
@@ -282,24 +238,11 @@ void USGHapticGloveCalibrationSequence::SetHapticGloveCalibrationSequenceImpl(
TSharedRef<FSGHapticGloveCalibrationSequenceImpl>
USGHapticGloveCalibrationSequence::ToHapticGloveCalibrationSequenceImpl() const
{
SyncImplObject();
return Pimpl->HapticGloveCalibrationSequenceImpl.ToSharedRef();
}
void USGHapticGloveCalibrationSequence::SyncImplObject() const
{
Pimpl->SyncImplObject();
}
void USGHapticGloveCalibrationSequence::SyncUProperties()
{
Pimpl->SyncUProperties();
}
USGHapticGlove* USGHapticGloveCalibrationSequence::GetLinkedGlove(UObject* Outer) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveCalibrationSequenceImpl InstanceContainer{ToHapticGloveCalibrationSequenceImpl()};
FSGIC_TSharedPtr_FSGHapticGloveImpl OutGloveContainer;
SGCoreImpl_FSGHapticGloveCalibrationSequenceImpl_GetLinkedGlove(&InstanceContainer, &OutGloveContainer);
@@ -308,19 +251,13 @@ USGHapticGlove* USGHapticGloveCalibrationSequence::GetLinkedGlove(UObject* Outer
void USGHapticGloveCalibrationSequence::SetLinkedGlove(const USGHapticGlove* LinkedGlove)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveCalibrationSequenceImpl InstanceContainer{ToHapticGloveCalibrationSequenceImpl()};
FSGIC_TSharedPtr_FSGHapticGloveImpl LinkedGloveContainer{LinkedGlove->ToHapticGloveImpl()};
SGCoreImpl_FSGHapticGloveCalibrationSequenceImpl_SetLinkedGlove(&InstanceContainer, &LinkedGloveContainer);
SyncUProperties();
}
TArray<USGCalibrationDataPoint*> USGHapticGloveCalibrationSequence::GetCalibrationPoints(UObject* Outer) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveCalibrationSequenceImpl InstanceContainer{ToHapticGloveCalibrationSequenceImpl()};
FSGIC_TArray_FSGCalibrationDataPointImpl OutPoints;
SGCoreImpl_FSGHapticGloveCalibrationSequenceImpl_GetCalibrationPoints(&InstanceContainer, &OutPoints);
@@ -336,97 +273,67 @@ TArray<USGCalibrationDataPoint*> USGHapticGloveCalibrationSequence::GetCalibrati
float USGHapticGloveCalibrationSequence::GetElapsedTime() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveCalibrationSequenceImpl InstanceContainer{ToHapticGloveCalibrationSequenceImpl()};
return SGCoreImpl_FSGHapticGloveCalibrationSequenceImpl_GetElapsedTime(&InstanceContainer);
}
bool USGHapticGloveCalibrationSequence::IsManuallyCompleted() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveCalibrationSequenceImpl InstanceContainer{ToHapticGloveCalibrationSequenceImpl()};
return SGCoreImpl_FSGHapticGloveCalibrationSequenceImpl_IsManuallyCompleted(&InstanceContainer);
}
int32 USGHapticGloveCalibrationSequence::GetCurrentStage() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveCalibrationSequenceImpl InstanceContainer{ToHapticGloveCalibrationSequenceImpl()};
return SGCoreImpl_FSGHapticGloveCalibrationSequenceImpl_GetCurrentStage(&InstanceContainer);
}
SIZE_T USGHapticGloveCalibrationSequence::GetCalibrationPointsCount() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveCalibrationSequenceImpl InstanceContainer{ToHapticGloveCalibrationSequenceImpl()};
return SGCoreImpl_FSGHapticGloveCalibrationSequenceImpl_GetCalibrationPointsCount(&InstanceContainer);
}
bool USGHapticGloveCalibrationSequence::AutoCompleted() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveCalibrationSequenceImpl InstanceContainer{ToHapticGloveCalibrationSequenceImpl()};
return SGCoreImpl_FSGHapticGloveCalibrationSequenceImpl_AutoCompleted(&InstanceContainer);
}
bool USGHapticGloveCalibrationSequence::Completed() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveCalibrationSequenceImpl InstanceContainer{ToHapticGloveCalibrationSequenceImpl()};
return SGCoreImpl_FSGHapticGloveCalibrationSequenceImpl_Completed(&InstanceContainer);
}
void USGHapticGloveCalibrationSequence::Reset()
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveCalibrationSequenceImpl InstanceContainer{ToHapticGloveCalibrationSequenceImpl()};
SGCoreImpl_FSGHapticGloveCalibrationSequenceImpl_Reset(&InstanceContainer);
SyncUProperties();
}
void USGHapticGloveCalibrationSequence::AddDataPoint(const TArray<FVector>& CalibrationPoints)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveCalibrationSequenceImpl InstanceContainer{ToHapticGloveCalibrationSequenceImpl()};
FSGIC_TArray_FVector CalibrationPointsContainer{CalibrationPoints};
SGCoreImpl_FSGHapticGloveCalibrationSequenceImpl_AddDataPoint(&InstanceContainer, &CalibrationPointsContainer);
SyncUProperties();
}
void USGHapticGloveCalibrationSequence::Update(const float DeltaSeconds)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveCalibrationSequenceImpl InstanceContainer{ToHapticGloveCalibrationSequenceImpl()};
SGCoreImpl_FSGHapticGloveCalibrationSequenceImpl_Update(&InstanceContainer, DeltaSeconds);
SyncUProperties();
}
void USGHapticGloveCalibrationSequence::ConfirmCurrentStep()
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveCalibrationSequenceImpl InstanceContainer{ToHapticGloveCalibrationSequenceImpl()};
SGCoreImpl_FSGHapticGloveCalibrationSequenceImpl_ConfirmCurrentStep(&InstanceContainer);
SyncUProperties();
}
bool USGHapticGloveCalibrationSequence::CompileRange(UObject* Outer, USGSensorRange*& OutSensorRange) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveCalibrationSequenceImpl InstanceContainer{ToHapticGloveCalibrationSequenceImpl()};
FSGIC_FSGSensorRangeImpl OutSensorRangeContainer;
const bool bResult = SGCoreImpl_FSGHapticGloveCalibrationSequenceImpl_CompileRange(
@@ -444,8 +351,6 @@ bool USGHapticGloveCalibrationSequence::CompileProfile(UObject* Outer,
const ESGDeviceType ForDevice, const bool bRightHanded,
USGHandProfile*& OutProfile) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveCalibrationSequenceImpl InstanceContainer{ToHapticGloveCalibrationSequenceImpl()};
FSGIC_ESGDeviceType ForDeviceContainer{ForDevice};
FSGIC_FSGHandProfileImpl OutProfileContainer;
@@ -463,8 +368,6 @@ bool USGHapticGloveCalibrationSequence::CompileProfile(UObject* Outer,
bool USGHapticGloveCalibrationSequence::GetHandPose(UObject* Outer, USGHandPose*& OutCurrentHandPose) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveCalibrationSequenceImpl InstanceContainer{ToHapticGloveCalibrationSequenceImpl()};
FSGIC_FSGHandPoseImpl OutCurrentHandPoseContainer;
const bool bResult = SGCoreImpl_FSGHapticGloveCalibrationSequenceImpl_GetHandPose_OutCurrentHandPose(
@@ -481,8 +384,6 @@ bool USGHapticGloveCalibrationSequence::GetHandPose(UObject* Outer, USGHandPose*
bool USGHapticGloveCalibrationSequence::GetHandPose(UObject* Outer,
const bool bRightHanded, USGHandPose*& OutCurrentHandPose) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveCalibrationSequenceImpl InstanceContainer{ToHapticGloveCalibrationSequenceImpl()};
FSGIC_FSGHandPoseImpl OutCurrentHandPoseContainer;
const bool bResult = SGCoreImpl_FSGHapticGloveCalibrationSequenceImpl_GetHandPose_bRightHanded_OutCurrentHandPose(
@@ -498,8 +399,6 @@ bool USGHapticGloveCalibrationSequence::GetHandPose(UObject* Outer,
FString USGHapticGloveCalibrationSequence::GetCurrentInstruction(const FString& NextStepKey) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveCalibrationSequenceImpl InstanceContainer{ToHapticGloveCalibrationSequenceImpl()};
FSGIC_FString OutInstructionContainer;
FSGIC_FString NextStepKeyContainer{NextStepKey};
@@ -520,11 +419,3 @@ void USGHapticGloveCalibrationSequence::FImplDeleter::operator()(const FImpl* P)
{
delete P;
}
void USGHapticGloveCalibrationSequence::FImpl::SyncUProperties()
{
}
void USGHapticGloveCalibrationSequence::FImpl::SyncImplObject()
{
}
@@ -80,13 +80,6 @@ struct USGHapticGloveCommandBuffer::FImpl
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGHapticGloveCommandBuffer* USGHapticGloveCommandBuffer::NewHapticGloveCommandBuffer(
@@ -122,32 +115,20 @@ int32 USGHapticGloveCommandBuffer::GetMaxThumpCommands()
}
USGHapticGloveCommandBuffer::USGHapticGloveCommandBuffer()
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGHapticGloveCommandBufferImpl OutHapticGloveCommandBufferImplContainer;
SGCoreImpl_FSGHapticGloveCommandBufferImpl_ctor(&OutHapticGloveCommandBufferImplContainer);
Pimpl->HapticGloveCommandBufferImpl = MoveTemp(
OutHapticGloveCommandBufferImplContainer.HapticGloveCommandBufferImpl);
Pimpl->SyncUProperties();
}
USGHapticGloveCommandBuffer::USGHapticGloveCommandBuffer(
const FSGHapticGloveCommandBufferImpl& HapticGloveCommandBufferImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
SetHapticGloveCommandBufferImpl(HapticGloveCommandBufferImpl);
Pimpl->SyncUProperties();
}
USGHapticGloveCommandBuffer::~USGHapticGloveCommandBuffer() = default;
@@ -163,14 +144,11 @@ void USGHapticGloveCommandBuffer::SetHapticGloveCommandBufferImpl(
const FSGHapticGloveCommandBufferImpl& USGHapticGloveCommandBuffer::ToHapticGloveCommandBufferImpl() const
{
Pimpl->SyncImplObject();
return Pimpl->HapticGloveCommandBufferImpl;
}
TArray<USGForceFeedbackCommand*> USGHapticGloveCommandBuffer::GetForceFeedbackCommandsQueue(UObject* Outer) const
{
Pimpl->SyncImplObject();
FSGIC_FSGHapticGloveCommandBufferImpl InstanceContainer{ToHapticGloveCommandBufferImpl()};
FSGIC_TArray_FSGForceFeedbackCommandImpl OutForceFeedbackCommandsQueueContainer;
SGCoreImpl_FSGHapticGloveCommandBufferImpl_GetForceFeedbackCommandsQueue(&InstanceContainer,
@@ -188,8 +166,6 @@ TArray<USGForceFeedbackCommand*> USGHapticGloveCommandBuffer::GetForceFeedbackCo
TArray<USGTimedBuzzCommand*> USGHapticGloveCommandBuffer::GetBuzzCommandsQueue(UObject* Outer) const
{
Pimpl->SyncImplObject();
FSGIC_FSGHapticGloveCommandBufferImpl InstanceContainer{ToHapticGloveCommandBufferImpl()};
FSGIC_TArray_FSGTimedBuzzCommandImpl OutBuzzCommandsQueueContainer;
SGCoreImpl_FSGHapticGloveCommandBufferImpl_GetBuzzCommandsQueue(&InstanceContainer, &OutBuzzCommandsQueueContainer);
@@ -205,8 +181,6 @@ TArray<USGTimedBuzzCommand*> USGHapticGloveCommandBuffer::GetBuzzCommandsQueue(U
TArray<USGTimedThumpCommand*> USGHapticGloveCommandBuffer::GetThumperCommandsQueue(UObject* Outer) const
{
Pimpl->SyncImplObject();
FSGIC_FSGHapticGloveCommandBufferImpl InstanceContainer{ToHapticGloveCommandBufferImpl()};
FSGIC_TArray_FSGTimedThumpCommandImpl OutThumperCommandsQueueContainer;
SGCoreImpl_FSGHapticGloveCommandBufferImpl_GetThumperCommandsQueue(&InstanceContainer,
@@ -223,84 +197,54 @@ TArray<USGTimedThumpCommand*> USGHapticGloveCommandBuffer::GetThumperCommandsQue
void USGHapticGloveCommandBuffer::ClearForceFeedbackCommandsQueue()
{
Pimpl->SyncImplObject();
FSGIC_FSGHapticGloveCommandBufferImpl InstanceContainer{ToHapticGloveCommandBufferImpl()};
SGCoreImpl_FSGHapticGloveCommandBufferImpl_ClearForceFeedbackCommandsQueue(&InstanceContainer);
Pimpl->SyncUProperties();
}
void USGHapticGloveCommandBuffer::ClearVibrations()
{
Pimpl->SyncImplObject();
FSGIC_FSGHapticGloveCommandBufferImpl InstanceContainer{ToHapticGloveCommandBufferImpl()};
SGCoreImpl_FSGHapticGloveCommandBufferImpl_ClearVibrations(&InstanceContainer);
Pimpl->SyncUProperties();
}
void USGHapticGloveCommandBuffer::Clear()
{
Pimpl->SyncImplObject();
FSGIC_FSGHapticGloveCommandBufferImpl InstanceContainer{ToHapticGloveCommandBufferImpl()};
SGCoreImpl_FSGHapticGloveCommandBufferImpl_Clear(&InstanceContainer);
Pimpl->SyncUProperties();
}
void USGHapticGloveCommandBuffer::AddCommand(const USGForceFeedbackCommand* ForceFeedbackCommand)
{
Pimpl->SyncImplObject();
FSGIC_FSGHapticGloveCommandBufferImpl InstanceContainer{ToHapticGloveCommandBufferImpl()};
FSGIC_FSGForceFeedbackCommandImpl ForceFeedbackCommandContainer{
ForceFeedbackCommand->ToForceFeedbackCommandImpl().Get()};
SGCoreImpl_FSGHapticGloveCommandBufferImpl_AddCommand_ForceFeedbackCommand(
&InstanceContainer, &ForceFeedbackCommandContainer);
Pimpl->SyncUProperties();
}
void USGHapticGloveCommandBuffer::AddCommand(const USGTimedBuzzCommand* BuzzCommand)
{
Pimpl->SyncImplObject();
FSGIC_FSGHapticGloveCommandBufferImpl InstanceContainer{ToHapticGloveCommandBufferImpl()};
FSGIC_FSGTimedBuzzCommandImpl BuzzCommandContainer{BuzzCommand->ToTimedBuzzCommandImpl().Get()};
SGCoreImpl_FSGHapticGloveCommandBufferImpl_AddCommand_BuzzCommand(&InstanceContainer, &BuzzCommandContainer);
Pimpl->SyncUProperties();
}
void USGHapticGloveCommandBuffer::AddCommand(const USGTimedThumpCommand* ThumpCommand)
{
Pimpl->SyncImplObject();
FSGIC_FSGHapticGloveCommandBufferImpl InstanceContainer{ToHapticGloveCommandBufferImpl()};
FSGIC_FSGTimedThumpCommandImpl ThumpCommandContainer{ThumpCommand->ToTimedThumpCommandImpl()};
SGCoreImpl_FSGHapticGloveCommandBufferImpl_AddCommand_ThumpCommand(&InstanceContainer, &ThumpCommandContainer);
Pimpl->SyncUProperties();
}
void USGHapticGloveCommandBuffer::UpdateTimedCommands(const float DeltaSeconds)
{
Pimpl->SyncImplObject();
FSGIC_FSGHapticGloveCommandBufferImpl InstanceContainer{ToHapticGloveCommandBufferImpl()};
SGCoreImpl_FSGHapticGloveCommandBufferImpl_UpdateTimedCommands(&InstanceContainer, DeltaSeconds);
Pimpl->SyncUProperties();
}
USGForceFeedbackCommand* USGHapticGloveCommandBuffer::GetTotalForceFeedbackLevels(
UObject* Outer, const USGForceFeedbackCommand* LastForceFeedbackCommand) const
{
Pimpl->SyncImplObject();
FSGIC_FSGHapticGloveCommandBufferImpl InstanceContainer{ToHapticGloveCommandBufferImpl()};
FSGIC_FSGForceFeedbackCommandImpl OutForceFeedbackCommandImplContainer;
FSGIC_FSGForceFeedbackCommandImpl LastForceFeedbackCommandContainer{
@@ -314,8 +258,6 @@ USGForceFeedbackCommand* USGHapticGloveCommandBuffer::GetTotalForceFeedbackLevel
USGForceFeedbackCommand* USGHapticGloveCommandBuffer::GetTotalForceFeedbackLevels(UObject* Outer) const
{
Pimpl->SyncImplObject();
FSGIC_FSGHapticGloveCommandBufferImpl InstanceContainer{ToHapticGloveCommandBufferImpl()};
FSGIC_FSGForceFeedbackCommandImpl OutForceFeedbackCommandImplContainer;
SGCoreImpl_FSGHapticGloveCommandBufferImpl_GetTotalForceFeedbackLevels(
@@ -327,8 +269,6 @@ USGForceFeedbackCommand* USGHapticGloveCommandBuffer::GetTotalForceFeedbackLevel
USGBuzzCommand* USGHapticGloveCommandBuffer::GetTotalBuzzLevels(UObject* Outer) const
{
Pimpl->SyncImplObject();
FSGIC_FSGHapticGloveCommandBufferImpl InstanceContainer{ToHapticGloveCommandBufferImpl()};
FSGIC_FSGBuzzCommandImpl OutBuzzCommandImplContainer;
SGCoreImpl_FSGHapticGloveCommandBufferImpl_GetTotalBuzzLevels(&InstanceContainer, &OutBuzzCommandImplContainer);
@@ -338,8 +278,6 @@ USGBuzzCommand* USGHapticGloveCommandBuffer::GetTotalBuzzLevels(UObject* Outer)
USGThumperCommand* USGHapticGloveCommandBuffer::GetTotalThumperLevels(UObject* Outer) const
{
Pimpl->SyncImplObject();
FSGIC_FSGHapticGloveCommandBufferImpl InstanceContainer{ToHapticGloveCommandBufferImpl()};
FSGIC_FSGThumperCommandImpl OutThumperCommandImplContainer;
SGCoreImpl_FSGHapticGloveCommandBufferImpl_GetTotalThumperLevels(&InstanceContainer,
@@ -355,8 +293,6 @@ void USGHapticGloveCommandBuffer::FlushHaptics(UObject* Outer,
USGThumperCommand*& OutThumperCommand,
const bool bClearForceFeedbackQueue)
{
Pimpl->SyncImplObject();
FSGIC_FSGHapticGloveCommandBufferImpl InstanceContainer{ToHapticGloveCommandBufferImpl()};
FSGIC_FSGForceFeedbackCommandImpl LastBrakeLevelContainer{LastBrakeLevel->ToForceFeedbackCommandImpl().Get()};
FSGIC_FSGForceFeedbackCommandImpl OutForceFeedbackCommandImplContainer;
@@ -371,8 +307,6 @@ void USGHapticGloveCommandBuffer::FlushHaptics(UObject* Outer,
OutBuzzCommand = USGBuzzCommand::NewBuzzCommand(Outer, MoveTemp(OutBuzzCommandImplContainer.BuzzCommandImpl));
OutThumperCommand = USGThumperCommand::NewThumperCommand(
Outer, MoveTemp(OutThumperCommandImplContainer.ThumperCommandImpl));
Pimpl->SyncUProperties();
}
void USGHapticGloveCommandBuffer::FlushHaptics(UObject* Outer,
@@ -382,8 +316,6 @@ void USGHapticGloveCommandBuffer::FlushHaptics(UObject* Outer,
USGBuzzCommand*& OutBuzzCommand,
USGThumperCommand*& OutThumperCommand)
{
Pimpl->SyncImplObject();
FSGIC_FSGHapticGloveCommandBufferImpl InstanceContainer{ToHapticGloveCommandBufferImpl()};
FSGIC_FSGForceFeedbackCommandImpl LastBrakeLevelContainer{LastBrakeLevel->ToForceFeedbackCommandImpl().Get()};
FSGIC_FSGForceFeedbackCommandImpl OutForceFeedbackCommandImplContainer;
@@ -398,8 +330,6 @@ void USGHapticGloveCommandBuffer::FlushHaptics(UObject* Outer,
OutBuzzCommand = USGBuzzCommand::NewBuzzCommand(Outer, MoveTemp(OutBuzzCommandImplContainer.BuzzCommandImpl));
OutThumperCommand = USGThumperCommand::NewThumperCommand(
Outer, MoveTemp(OutThumperCommandImplContainer.ThumperCommandImpl));
Pimpl->SyncUProperties();
}
USGHapticGloveCommandBuffer::FImpl::FImpl(USGHapticGloveCommandBuffer* InOwner)
@@ -413,11 +343,3 @@ void USGHapticGloveCommandBuffer::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGHapticGloveCommandBuffer::FImpl::SyncUProperties()
{
}
void USGHapticGloveCommandBuffer::FImpl::SyncImplObject()
{
}
@@ -38,6 +38,9 @@
#include "SGHapticGloveCalibrationSequenceImplCast.h"
#include "Runtime/Launch/Resources/Version.h"
#include "SGCore/SGHandPose.h"
#include "SGCore/SGHandProfile.h"
#include "SGCore/SGSensorRange.h"
#include "SGCoreImpl/SGExportedFunctions.h"
#include "SGInterop/SGIC_FSGHandPoseImpl.h"
#include "SGInterop/SGIC_FSGHandProfileImpl.h"
@@ -48,42 +51,6 @@
#include "SGInterop/SGIC_TSharedPtr_FSGHapticGloveQuickCalibrationImpl.h"
#include "SGUtils/SGArrayUtils.h"
struct USGHapticGloveQuickCalibration::FImpl
{
/************************
* Member variables
************************/
/************************
* Owner object
************************/
USGHapticGloveQuickCalibration* Owner;
/************************
* Constructor / Destructor
************************/
explicit FImpl(USGHapticGloveQuickCalibration* InOwner);
~FImpl();
/************************
* Default copy constructor & copy assignment operator
************************/
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGHapticGloveQuickCalibration* USGHapticGloveQuickCalibration::NewHapticGloveQuickCalibration(UObject* Outer,
const FSGHapticGloveQuickCalibrationImpl& HapticGloveQuickCalibration)
{
@@ -125,28 +92,17 @@ float USGHapticGloveQuickCalibration::GetDefaultAutoEndTimeout()
}
USGHapticGloveQuickCalibration::USGHapticGloveQuickCalibration()
: USGHapticGloveCalibrationSequence(),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGHapticGloveCalibrationSequence()
{
FSGIC_TSharedPtr_FSGHapticGloveQuickCalibrationImpl OutSharedPtrContainer;
SGCoreImpl_FSGHapticGloveQuickCalibrationImpl_ctor_MakeShared(&OutSharedPtrContainer);
SetHapticGloveCalibrationSequenceImpl(OutSharedPtrContainer.Ptr.ToSharedRef());
Pimpl->SyncUProperties();
}
USGHapticGloveQuickCalibration::USGHapticGloveQuickCalibration(
const USGHapticGlove* GloveToCalibrate, const float AutoEndTimeout)
: USGHapticGloveCalibrationSequence(GloveToCalibrate),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGHapticGloveCalibrationSequence(GloveToCalibrate)
{
FSGIC_TSharedPtr_FSGHapticGloveQuickCalibrationImpl OutSharedPtrContainer;
FSGIC_TSharedPtr_FSGHapticGloveImpl GloveToCalibrateContainer{GloveToCalibrate->ToHapticGloveImpl()};
@@ -154,54 +110,28 @@ USGHapticGloveQuickCalibration::USGHapticGloveQuickCalibration(
&OutSharedPtrContainer, &GloveToCalibrateContainer, AutoEndTimeout);
SetHapticGloveCalibrationSequenceImpl(OutSharedPtrContainer.Ptr.ToSharedRef());
Pimpl->SyncUProperties();
}
USGHapticGloveQuickCalibration::USGHapticGloveQuickCalibration(
const FSGHapticGloveQuickCalibrationImpl& HapticGloveQuickCalibrationImpl)
: USGHapticGloveCalibrationSequence(HapticGloveQuickCalibrationImpl),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGHapticGloveCalibrationSequence(HapticGloveQuickCalibrationImpl)
{
Pimpl->SyncUProperties();
}
USGHapticGloveQuickCalibration::USGHapticGloveQuickCalibration(
TSharedRef<FSGHapticGloveQuickCalibrationImpl> HapticGloveQuickCalibrationImpl)
: USGHapticGloveCalibrationSequence(MoveTemp(HapticGloveQuickCalibrationImpl)),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGHapticGloveCalibrationSequence(MoveTemp(HapticGloveQuickCalibrationImpl))
{
Pimpl->SyncUProperties();
}
USGHapticGloveQuickCalibration::~USGHapticGloveQuickCalibration() = default;
TSharedRef<FSGHapticGloveQuickCalibrationImpl> USGHapticGloveQuickCalibration::ToHapticGloveQuickCalibrationImpl() const
{
SyncImplObject();
return FSGHapticGloveCalibrationSequenceImplCast::ToHapticGloveQuickCalibrationImpl(
ToHapticGloveCalibrationSequenceImpl());
}
void USGHapticGloveQuickCalibration::SyncImplObject() const
{
Super::SyncImplObject();
Pimpl->SyncImplObject();
}
void USGHapticGloveQuickCalibration::SyncUProperties()
{
Super::SyncUProperties();
Pimpl->SyncUProperties();
}
float USGHapticGloveQuickCalibration::GetAutoEndTimeout() const
{
FSGIC_TSharedPtr_FSGHapticGloveQuickCalibrationImpl InstanceContainer{ToHapticGloveQuickCalibrationImpl()};
@@ -210,16 +140,12 @@ float USGHapticGloveQuickCalibration::GetAutoEndTimeout() const
int32 USGHapticGloveQuickCalibration::GetSmoothingSamples() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveQuickCalibrationImpl InstanceContainer{ToHapticGloveQuickCalibrationImpl()};
return SGCoreImpl_FSGHapticGloveQuickCalibrationImpl_GetSmoothingSamples(&InstanceContainer);
}
USGSensorRange* USGHapticGloveQuickCalibration::GetSensorRange(UObject* Outer) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveQuickCalibrationImpl InstanceContainer{ToHapticGloveQuickCalibrationImpl()};
FSGIC_FSGSensorRangeImpl OutRangeContainer;
SGCoreImpl_FSGHapticGloveQuickCalibrationImpl_GetSensorRange(&InstanceContainer, &OutRangeContainer);
@@ -229,8 +155,6 @@ USGSensorRange* USGHapticGloveQuickCalibration::GetSensorRange(UObject* Outer) c
USGHandProfile* USGHapticGloveQuickCalibration::GetTemporaryProfile(UObject* Outer) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveQuickCalibrationImpl InstanceContainer{ToHapticGloveQuickCalibrationImpl()};
FSGIC_FSGHandProfileImpl OutProfileContainer;
SGCoreImpl_FSGHapticGloveQuickCalibrationImpl_GetTemporaryProfile(&InstanceContainer, &OutProfileContainer);
@@ -240,65 +164,43 @@ USGHandProfile* USGHapticGloveQuickCalibration::GetTemporaryProfile(UObject* Out
bool USGHapticGloveQuickCalibration::CanAnimate() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveQuickCalibrationImpl InstanceContainer{ToHapticGloveQuickCalibrationImpl()};
return SGCoreImpl_FSGHapticGloveQuickCalibrationImpl_CanAnimate(&InstanceContainer);
}
bool USGHapticGloveQuickCalibration::AutoCompleted() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveQuickCalibrationImpl InstanceContainer{ToHapticGloveQuickCalibrationImpl()};
return SGCoreImpl_FSGHapticGloveQuickCalibrationImpl_AutoCompleted(&InstanceContainer);
}
void USGHapticGloveQuickCalibration::Reset()
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveQuickCalibrationImpl InstanceContainer{ToHapticGloveQuickCalibrationImpl()};
SGCoreImpl_FSGHapticGloveQuickCalibrationImpl_Reset(&InstanceContainer);
SyncUProperties();
}
void USGHapticGloveQuickCalibration::Update(const float DeltaSeconds)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveQuickCalibrationImpl InstanceContainer{ToHapticGloveQuickCalibrationImpl()};
SGCoreImpl_FSGHapticGloveQuickCalibrationImpl_Update(&InstanceContainer, DeltaSeconds);
SyncUProperties();
}
void USGHapticGloveQuickCalibration::AddDataPoint(const TArray<FVector>& CalibrationPoints)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveQuickCalibrationImpl InstanceContainer{ToHapticGloveQuickCalibrationImpl()};
FSGIC_TArray_FVector CalibrationPointsContainer{CalibrationPoints};
SGCoreImpl_FSGHapticGloveQuickCalibrationImpl_AddDataPoint(&InstanceContainer, &CalibrationPointsContainer);
SyncUProperties();
}
void USGHapticGloveQuickCalibration::ConfirmCurrentStep()
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveQuickCalibrationImpl InstanceContainer{ToHapticGloveQuickCalibrationImpl()};
SGCoreImpl_FSGHapticGloveQuickCalibrationImpl_ConfirmCurrentStep(&InstanceContainer);
SyncUProperties();
}
bool USGHapticGloveQuickCalibration::CompileRange(UObject* Outer, USGSensorRange*& OutSensorRange) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveQuickCalibrationImpl InstanceContainer{ToHapticGloveQuickCalibrationImpl()};
FSGIC_FSGSensorRangeImpl OutSensorRangeContainer;
const bool bResult = SGCoreImpl_FSGHapticGloveQuickCalibrationImpl_CompileRange(
@@ -312,8 +214,6 @@ bool USGHapticGloveQuickCalibration::CompileRange(UObject* Outer, USGSensorRange
bool USGHapticGloveQuickCalibration::GetHandPose(UObject* Outer,
const bool bRightHanded, USGHandPose*& OutCurrentHandPose) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveQuickCalibrationImpl InstanceContainer{ToHapticGloveQuickCalibrationImpl()};
FSGIC_FSGHandPoseImpl OutCurrentHandPoseContainer;
const bool bResult = SGCoreImpl_FSGHapticGloveQuickCalibrationImpl_GetHandPose(
@@ -326,8 +226,6 @@ bool USGHapticGloveQuickCalibration::GetHandPose(UObject* Outer,
FString USGHapticGloveQuickCalibration::GetCurrentInstruction(const FString& NextStepKey) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGHapticGloveQuickCalibrationImpl InstanceContainer{ToHapticGloveQuickCalibrationImpl()};
FSGIC_FString OutInstructionContainer;
FSGIC_FString NextStepKeyContainer{NextStepKey};
@@ -336,23 +234,3 @@ FString USGHapticGloveQuickCalibration::GetCurrentInstruction(const FString& Nex
return MoveTemp(OutInstructionContainer.String);
}
USGHapticGloveQuickCalibration::FImpl::FImpl(USGHapticGloveQuickCalibration* InOwner)
: Owner(InOwner)
{
}
USGHapticGloveQuickCalibration::FImpl::~FImpl() = default;
void USGHapticGloveQuickCalibration::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGHapticGloveQuickCalibration::FImpl::SyncUProperties()
{
}
void USGHapticGloveQuickCalibration::FImpl::SyncImplObject()
{
}
@@ -69,13 +69,6 @@ struct USGInterpolationSet::FImpl
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGInterpolationSet* USGInterpolationSet::NewInterpolationSet(UObject* Outer,
@@ -125,63 +118,39 @@ USGInterpolationSet* USGInterpolationSet::Deserialize(UObject* Outer, const FStr
}
USGInterpolationSet::USGInterpolationSet()
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGInterpolationSetImpl OutInterpolationSetImplContainer;
SGCoreImpl_FSGInterpolationSetImpl_ctor(&OutInterpolationSetImplContainer);
Pimpl->InterpolationSetImpl = MoveTemp(OutInterpolationSetImplContainer.InterpolationSetImpl);
Pimpl->SyncUProperties();
}
USGInterpolationSet::USGInterpolationSet(const float From1, const float From2, const float To1, const float To2)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGInterpolationSetImpl OutInterpolationSetImplContainer;
SGCoreImpl_FSGInterpolationSetImpl_ctor_From1_From2_To1_To2(&OutInterpolationSetImplContainer,
From1, From2, To1, To2);
Pimpl->InterpolationSetImpl = MoveTemp(OutInterpolationSetImplContainer.InterpolationSetImpl);
Pimpl->SyncUProperties();
}
USGInterpolationSet::USGInterpolationSet(const float From1, const float From2, const float To1, const float To2,
const float Min, const float Max)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGInterpolationSetImpl OutInterpolationSetImplContainer;
SGCoreImpl_FSGInterpolationSetImpl_ctor_From1_From2_To1_To2_Min_Max(&OutInterpolationSetImplContainer,
From1, From2, To1, To2, Min, Max);
Pimpl->InterpolationSetImpl = MoveTemp(OutInterpolationSetImplContainer.InterpolationSetImpl);
Pimpl->SyncUProperties();
}
USGInterpolationSet::USGInterpolationSet(const FSGInterpolationSetImpl& InterpolationSetImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
SetInterpolationSetImpl(InterpolationSetImpl);
Pimpl->SyncUProperties();
}
USGInterpolationSet::~USGInterpolationSet() = default;
@@ -196,7 +165,6 @@ void USGInterpolationSet::SetInterpolationSetImpl(const FSGInterpolationSetImpl&
const FSGInterpolationSetImpl& USGInterpolationSet::ToInterpolationSetImpl() const
{
Pimpl->SyncImplObject();
return Pimpl->InterpolationSetImpl;
}
@@ -274,16 +242,12 @@ void USGInterpolationSet::SetMax(const float Max)
float USGInterpolationSet::Get(const float Value, const bool bLimit, const bool bNormalizeAngle) const
{
Pimpl->SyncImplObject();
FSGIC_FSGInterpolationSetImpl InstanceContainer{ToInterpolationSetImpl()};
return SGCoreImpl_FSGInterpolationSetImpl_Get(&InstanceContainer, Value, bLimit, bNormalizeAngle);
}
bool USGInterpolationSet::Equals(const USGInterpolationSet* InterpolationSet) const
{
Pimpl->SyncImplObject();
FSGIC_FSGInterpolationSetImpl InstanceContainer{ToInterpolationSetImpl()};
FSGIC_FSGInterpolationSetImpl InterpolationSetContainer{InterpolationSet->ToInterpolationSetImpl()};
return SGCoreImpl_FSGInterpolationSetImpl_Equals(&InstanceContainer, &InterpolationSetContainer);
@@ -291,8 +255,6 @@ bool USGInterpolationSet::Equals(const USGInterpolationSet* InterpolationSet) co
FString USGInterpolationSet::ToString() const
{
Pimpl->SyncImplObject();
FSGIC_FSGInterpolationSetImpl InstanceContainer{ToInterpolationSetImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGInterpolationSetImpl_ToString(&InstanceContainer, &OutStringContainer);
@@ -301,8 +263,6 @@ FString USGInterpolationSet::ToString() const
FString USGInterpolationSet::ToString(const bool bLimits) const
{
Pimpl->SyncImplObject();
FSGIC_FSGInterpolationSetImpl InstanceContainer{ToInterpolationSetImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGInterpolationSetImpl_ToString_bLimits(&InstanceContainer, &OutStringContainer, bLimits);
@@ -311,8 +271,6 @@ FString USGInterpolationSet::ToString(const bool bLimits) const
FString USGInterpolationSet::SGSerialize() const
{
Pimpl->SyncImplObject();
FSGIC_FSGInterpolationSetImpl InstanceContainer{ToInterpolationSetImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGInterpolationSetImpl_Serialize(&InstanceContainer, &OutStringContainer);
@@ -330,11 +288,3 @@ void USGInterpolationSet::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGInterpolationSet::FImpl::SyncUProperties()
{
}
void USGInterpolationSet::FImpl::SyncImplObject()
{
}
@@ -43,6 +43,7 @@
#include "SGInterop/SGIC_FVector.h"
#include "SGInterop/SGIC_TArray_FQuat.h"
#include "SGInterop/SGIC_TArray_FVector.h"
#include "SGUtils/SGArrayUtils.h"
bool FSGJointKinematics::ForwardKinematics(
const FVector& StartPosition, const FQuat& StartRotation, const TArray<FVector>& JointLengths,
@@ -43,6 +43,7 @@
#include "SGCore/SGForceFeedbackCommand.h"
#include "SGCore/SGHandPose.h"
#include "SGCore/SGHandProfile.h"
#include "SGCore/SGNovaGloveHandProfile.h"
#include "SGCore/SGNovaGloveInfo.h"
#include "SGCore/SGNovaGloveSensorData.h"
#include "SGCore/SGThumperCommand.h"
@@ -69,42 +70,6 @@
#include "SGInterop/SGIC_TArray_FVector.h"
#include "SGInterop/SGIC_TSharedPtr_FSGNovaGloveImpl.h"
struct USGNovaGlove::FImpl
{
/************************
* Member variables
************************/
/************************
* Owner object
************************/
USGDevice* Owner;
/************************
* Constructor / Destructor
************************/
explicit FImpl(USGNovaGlove* InOwner);
~FImpl();
/************************
* Default copy constructor & copy assignment operator
************************/
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGNovaGlove* USGNovaGlove::NewNovaGlove(UObject* Outer, const FSGNovaGloveImpl& NovaGloveImpl)
{
USGNovaGlove* Instance = NewObject<USGNovaGlove>(Outer);
@@ -335,126 +300,63 @@ FString USGNovaGlove::ToBytes(const USGBuzzCommand* BuzzCommand)
}
USGNovaGlove::USGNovaGlove()
: USGHapticGlove(),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGHapticGlove()
{
FSGIC_TSharedPtr_FSGNovaGloveImpl OutSharedPtrContainer;
SGCoreImpl_FSGSenseGloveImpl_ctor_MakeShared(&OutSharedPtrContainer);
SetSGDeviceImpl(OutSharedPtrContainer.Ptr.ToSharedRef());
Pimpl->SyncUProperties();
}
USGNovaGlove::USGNovaGlove(const USGNovaGloveInfo& DeviceInfo)
: USGHapticGlove(),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGHapticGlove()
{
FSGIC_TSharedPtr_FSGNovaGloveImpl OutSharedPtrContainer;
FSGIC_FSGNovaGloveInfoImpl DeviceInfoContainer{DeviceInfo.ToNovaGloveInfoImpl()};
SGCoreImpl_FSGSenseGloveImpl_ctor_Model_MakeShared(&OutSharedPtrContainer, &DeviceInfoContainer);
SetSGDeviceImpl(OutSharedPtrContainer.Ptr.ToSharedRef());
Pimpl->SyncUProperties();
}
USGNovaGlove::USGNovaGlove(const FSGDeviceImpl& SGDeviceImpl)
: USGHapticGlove(SGDeviceImpl),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGHapticGlove(SGDeviceImpl)
{
Pimpl->SyncUProperties();
}
USGNovaGlove::USGNovaGlove(const FSGHapticGloveImpl& HapticGloveImpl)
: USGHapticGlove(HapticGloveImpl),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGHapticGlove(HapticGloveImpl)
{
Pimpl->SyncUProperties();
}
USGNovaGlove::USGNovaGlove(const FSGNovaGloveImpl& NovaGloveImpl)
: USGHapticGlove(NovaGloveImpl),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGHapticGlove(NovaGloveImpl)
{
Pimpl->SyncUProperties();
}
USGNovaGlove::USGNovaGlove(const TSharedRef<FSGDeviceImpl> SGDeviceImpl)
: USGHapticGlove(SGDeviceImpl),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGHapticGlove(SGDeviceImpl)
{
Pimpl->SyncUProperties();
}
USGNovaGlove::USGNovaGlove(const TSharedRef<FSGHapticGloveImpl> HapticGloveImpl)
: USGHapticGlove(HapticGloveImpl),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGHapticGlove(HapticGloveImpl)
{
Pimpl->SyncUProperties();
}
USGNovaGlove::USGNovaGlove(const TSharedRef<FSGNovaGloveImpl> NovaGloveImpl)
: USGHapticGlove(NovaGloveImpl),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGHapticGlove(NovaGloveImpl)
{
Pimpl->SyncUProperties();
}
USGNovaGlove::~USGNovaGlove() = default;
TSharedRef<FSGNovaGloveImpl> USGNovaGlove::ToNovaGloveImpl() const
{
SyncImplObject();
return FSGDeviceImplCast::ToNovaGloveImpl(ToSGDeviceImpl());
}
void USGNovaGlove::SyncImplObject() const
{
Super::SyncImplObject();
Pimpl->SyncImplObject();
}
void USGNovaGlove::SyncUProperties()
{
Super::SyncUProperties();
Pimpl->SyncUProperties();
}
ESGDeviceType USGNovaGlove::GetDeviceType() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()};
FSGIC_ESGDeviceType OutTypeContainer;
SGCoreImpl_FSGNovaGloveImpl_GetDeviceType(&InstanceContainer, &OutTypeContainer);
@@ -463,8 +365,6 @@ ESGDeviceType USGNovaGlove::GetDeviceType() const
FString USGNovaGlove::GetDeviceId() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()};
FSGIC_FString OutIdContainer;
SGCoreImpl_FSGNovaGloveImpl_GetDeviceId(&InstanceContainer, &OutIdContainer);
@@ -473,8 +373,6 @@ FString USGNovaGlove::GetDeviceId() const
FString USGNovaGlove::GetHardwareVersion() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()};
FSGIC_FString OutVersionContainer;
SGCoreImpl_FSGNovaGloveImpl_GetHardwareVersion(&InstanceContainer, &OutVersionContainer);
@@ -483,56 +381,38 @@ FString USGNovaGlove::GetHardwareVersion() const
int32 USGNovaGlove::GetFirmwareVersion() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()};
return SGCoreImpl_FSGNovaGloveImpl_GetFirmwareVersion(&InstanceContainer);
}
int32 USGNovaGlove::GetSubFirmwareVersion() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()};
return SGCoreImpl_FSGNovaGloveImpl_GetSubFirmwareVersion(&InstanceContainer);
}
bool USGNovaGlove::HasBattery() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()};
return SGCoreImpl_FSGNovaGloveImpl_HasBattery(&InstanceContainer);
}
bool USGNovaGlove::IsCharging()
{
SyncImplObject();
FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()};
const bool bResult = SGCoreImpl_FSGNovaGloveImpl_IsCharging(&InstanceContainer);
SyncUProperties();
return bResult;
}
bool USGNovaGlove::GetBatteryLevel(float& OutBatteryLevel)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()};
const bool bResult = SGCoreImpl_FSGNovaGloveImpl_GetBatteryLevel(&InstanceContainer, &OutBatteryLevel);
SyncUProperties();
return bResult;
}
bool USGNovaGlove::GetSensorData(UObject* Outer, USGNovaGloveSensorData*& OutSensorData)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()};
FSGIC_FSGNovaGloveSensorDataImpl OutSensorDataContainer;
const bool bResult = SGCoreImpl_FSGNovaGloveImpl_GetSensorData(&InstanceContainer, &OutSensorDataContainer);
@@ -548,14 +428,10 @@ bool USGNovaGlove::GetSensorData(UObject* Outer, USGNovaGloveSensorData*& OutSen
bool USGNovaGlove::GetImuRotation(FQuat& OutImu)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()};
FSGIC_FQuat OutImuContainer;
const bool bResult = SGCoreImpl_FSGNovaGloveImpl_GetImuRotation(&InstanceContainer, &OutImuContainer);
SyncUProperties();
if (bResult)
{
OutImu = MoveTemp(OutImuContainer.Quat);
@@ -566,14 +442,10 @@ bool USGNovaGlove::GetImuRotation(FQuat& OutImu)
bool USGNovaGlove::GetImuRotation(FRotator& OutImu)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()};
FSGIC_FQuat OutImuContainer;
const bool bResult = SGCoreImpl_FSGNovaGloveImpl_GetImuRotation(&InstanceContainer, &OutImuContainer);
SyncUProperties();
if (bResult)
{
OutImu = OutImuContainer.Quat.Rotator();
@@ -586,8 +458,6 @@ bool USGNovaGlove::GetHandPose(
UObject* Outer, const USGBasicHandModel* HandModel, const USGNovaGloveHandProfile* Profile,
USGHandPose*& OutHandPose)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()};
FSGIC_FSGBasicHandModelImpl HandModelContainer{HandModel->ToBasicHandModelImpl()};
FSGIC_FSGNovaGloveHandProfileImpl ProfileContainer{Profile->ToNovaGloveHandProfileImpl()};
@@ -595,8 +465,6 @@ bool USGNovaGlove::GetHandPose(
const bool bResult = SGCoreImpl_FSGNovaGloveImpl_GetHandPose_HandModel_Profile_OutHandPose(
&InstanceContainer, &HandModelContainer, &ProfileContainer, &OutHandPoseContainer);
SyncUProperties();
if (bResult)
{
OutHandPose = USGHandPose::NewHandPose(Outer, MoveTemp(OutHandPoseContainer.HandPoseImpl));
@@ -608,8 +476,6 @@ bool USGNovaGlove::GetHandPose(
bool USGNovaGlove::GetHandPose(UObject* Outer, const USGBasicHandModel* HandGeometry, const USGHandProfile* HandProfile,
USGHandPose*& OutHandPose)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()};
FSGIC_FSGBasicHandModelImpl HandGeometryContainer{HandGeometry->ToBasicHandModelImpl()};
FSGIC_FSGHandProfileImpl ProfileContainer{HandProfile->ToHandProfileImpl()};
@@ -617,8 +483,6 @@ bool USGNovaGlove::GetHandPose(UObject* Outer, const USGBasicHandModel* HandGeom
const bool bResult = SGCoreImpl_FSGNovaGloveImpl_GetHandPose_HandGeometry_HandProfile_OutHandPose(
&InstanceContainer, &HandGeometryContainer, &ProfileContainer, &OutHandPoseContainer);
SyncUProperties();
if (bResult)
{
OutHandPose = USGHandPose::NewHandPose(Outer, MoveTemp(OutHandPoseContainer.HandPoseImpl));
@@ -629,16 +493,12 @@ bool USGNovaGlove::GetHandPose(UObject* Outer, const USGBasicHandModel* HandGeom
bool USGNovaGlove::GetHandPose(UObject* Outer, const USGHandProfile* HandProfile, USGHandPose*& OutHandPose)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()};
FSGIC_FSGHandProfileImpl ProfileContainer{HandProfile->ToHandProfileImpl()};
FSGIC_FSGHandPoseImpl OutHandPoseContainer;
const bool bResult = SGCoreImpl_FSGNovaGloveImpl_GetHandPose_HandProfile_OutHandPose(
&InstanceContainer, &ProfileContainer, &OutHandPoseContainer);
SyncUProperties();
if (bResult)
{
OutHandPose = USGHandPose::NewHandPose(Outer, MoveTemp(OutHandPoseContainer.HandPoseImpl));
@@ -651,8 +511,6 @@ void USGNovaGlove::SendHaptics(const USGForceFeedbackCommand* ForceFeedbackComma
const USGBuzzCommand* BuzzCommand,
const USGThumperCommand* ThumperCommand)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()};
FSGIC_FSGForceFeedbackCommandImpl ForceFeedbackCommandContainer{
ForceFeedbackCommand->ToForceFeedbackCommandImpl().Get()};
@@ -660,55 +518,37 @@ void USGNovaGlove::SendHaptics(const USGForceFeedbackCommand* ForceFeedbackComma
FSGIC_FSGThumperCommandImpl ThumperCommandContainer{ThumperCommand->ToThumperCommandImpl()};
SGCoreImpl_FSGNovaGloveImpl_SendHaptics_ForceFeedbackCommand_BuzzCommand_ThumperCommand(
&InstanceContainer, &ForceFeedbackCommandContainer, &BuzzCommandContainer, &ThumperCommandContainer);
SyncUProperties();
}
void USGNovaGlove::SendHaptics(const USGForceFeedbackCommand* ForceFeedbackCommand)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()};
FSGIC_FSGForceFeedbackCommandImpl ForceFeedbackCommandContainer{
ForceFeedbackCommand->ToForceFeedbackCommandImpl().Get()};
SGCoreImpl_FSGNovaGloveImpl_SendHaptics_ForceFeedbackCommand(&InstanceContainer, &ForceFeedbackCommandContainer);
SyncUProperties();
}
void USGNovaGlove::SendHaptics(const USGBuzzCommand* BuzzCommand)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()};
FSGIC_FSGBuzzCommandImpl BuzzCommandContainer{BuzzCommand->ToBuzzCommandImpl().Get()};
SGCoreImpl_FSGNovaGloveImpl_SendHaptics_ForceFeedbackCommand(&InstanceContainer, &BuzzCommandContainer);
SyncUProperties();
}
void USGNovaGlove::SendHaptics(const USGThumperCommand* ThumperCommand)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()};
FSGIC_FSGThumperCommandImpl ThumperCommandContainer{ThumperCommand->ToThumperCommandImpl()};
SGCoreImpl_FSGNovaGloveImpl_SendHaptics_ForceFeedbackCommand(&InstanceContainer, &ThumperCommandContainer);
SyncUProperties();
}
bool USGNovaGlove::GetCalibrationValues(TArray<FVector>& OutValues)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()};
FSGIC_TArray_FVector OutValuesContainer;
const bool bResult = SGCoreImpl_FSGNovaGloveImpl_GetCalibrationValues_OutValues(
&InstanceContainer, &OutValuesContainer);
SyncUProperties();
if (bResult)
{
OutValues = MoveTemp(OutValuesContainer.Array);
@@ -719,8 +559,6 @@ bool USGNovaGlove::GetCalibrationValues(TArray<FVector>& OutValues)
void USGNovaGlove::ApplyCalibration(UObject* Outer, USGHandProfile*& OutProfile) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()};
FSGIC_FSGHandProfileImpl OutProfileContainer;
SGCoreImpl_FSGNovaGloveImpl_ApplyCalibration_HandProfile(&InstanceContainer, &OutProfileContainer);
@@ -729,8 +567,6 @@ void USGNovaGlove::ApplyCalibration(UObject* Outer, USGHandProfile*& OutProfile)
void USGNovaGlove::ApplyCalibration(UObject* Outer, USGNovaGloveHandProfile*& OutProfile) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()};
FSGIC_FSGNovaGloveHandProfileImpl OutProfileContainer;
SGCoreImpl_FSGNovaGloveImpl_ApplyCalibration_NovaGloveHandProfile(&InstanceContainer, &OutProfileContainer);
@@ -742,8 +578,6 @@ void USGNovaGlove::GetGloveLocation(const FVector& ReferencePosition, const FQua
const ESGPositionalTrackingHardware TrackingHardware,
FVector& OutGlovePosition, FQuat& OutGloveRotation) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()};
FSGIC_FVector ReferencePositionContainer{ReferencePosition};
FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation};
@@ -765,8 +599,6 @@ void USGNovaGlove::GetGloveLocation(const FVector& ReferencePosition, const FRot
const ESGPositionalTrackingHardware TrackingHardware,
FVector& OutGlovePosition, FRotator& OutGloveRotation) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()};
FSGIC_FVector ReferencePositionContainer{ReferencePosition};
FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation.Quaternion()};
@@ -788,8 +620,6 @@ void USGNovaGlove::GetWristLocation(const FVector& ReferencePosition, const FQua
const ESGPositionalTrackingHardware TrackingHardware,
FVector& OutWristPosition, FQuat& OutWristRotation) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()};
FSGIC_FVector ReferencePositionContainer{ReferencePosition};
FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation};
@@ -810,8 +640,6 @@ void USGNovaGlove::GetWristLocation(const FVector& ReferencePosition, const FRot
const ESGPositionalTrackingHardware TrackingHardware,
FVector& OutWristPosition, FRotator& OutWristRotation) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()};
FSGIC_FVector ReferencePositionContainer{ReferencePosition};
FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation.Quaternion()};
@@ -830,30 +658,8 @@ void USGNovaGlove::GetWristLocation(const FVector& ReferencePosition, const FRot
FString USGNovaGlove::ToString() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGNovaGloveImpl_ToString(&InstanceContainer, &OutStringContainer);
return MoveTemp(OutStringContainer.String);;
}
USGNovaGlove::FImpl::FImpl(USGNovaGlove* InOwner)
: Owner(InOwner)
{
}
USGNovaGlove::FImpl::~FImpl() = default;
void USGNovaGlove::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGNovaGlove::FImpl::SyncUProperties()
{
}
void USGNovaGlove::FImpl::SyncImplObject()
{
}
@@ -71,14 +71,6 @@ struct USGNovaGloveHandProfile::FImpl
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGNovaGloveHandProfile* USGNovaGloveHandProfile::NewNovaGloveHandProfile(
@@ -121,33 +113,22 @@ USGNovaGloveHandProfile* USGNovaGloveHandProfile::Deserialize(UObject* Outer, co
FSGIC_FSGNovaGloveHandProfileImpl OutNovaGloveHandProfileImplContainer;
FSGIC_FString SerializedStringContainer{SerializedString};
SGCoreImpl_FSGNovaGloveHandProfileImpl_Deserialize(&OutNovaGloveHandProfileImplContainer,
&SerializedStringContainer);
&SerializedStringContainer);
return NewNovaGloveHandProfile(Outer, MoveTemp(OutNovaGloveHandProfileImplContainer.NovaGloveHandProfileImpl));
}
USGNovaGloveHandProfile::USGNovaGloveHandProfile()
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGNovaGloveHandProfileImpl OutNovaGloveHandProfileImplContainer;
SGCoreImpl_FSGNovaGloveHandProfileImpl_ctor(&OutNovaGloveHandProfileImplContainer);
Pimpl->NovaGloveHandProfileImpl = MoveTemp(OutNovaGloveHandProfileImplContainer.NovaGloveHandProfileImpl);
Pimpl->SyncUProperties();
}
USGNovaGloveHandProfile::USGNovaGloveHandProfile(const bool bRightHanded, const USGHandInterpolator* Interpolator)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGNovaGloveHandProfileImpl OutNovaGloveHandProfileImplContainer;
FSGIC_FSGHandInterpolatorImpl InterpolatorContainer{Interpolator->ToHandInterpolatorImpl()};
@@ -155,19 +136,12 @@ USGNovaGloveHandProfile::USGNovaGloveHandProfile(const bool bRightHanded, const
&OutNovaGloveHandProfileImplContainer, bRightHanded, &InterpolatorContainer);
Pimpl->NovaGloveHandProfileImpl = MoveTemp(OutNovaGloveHandProfileImplContainer.NovaGloveHandProfileImpl);
Pimpl->SyncUProperties();
}
USGNovaGloveHandProfile::USGNovaGloveHandProfile(const FSGNovaGloveHandProfileImpl& NovaGloveHandProfileImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
SetNovaGloveHandProfileImpl(NovaGloveHandProfileImpl);
Pimpl->SyncUProperties();
}
USGNovaGloveHandProfile::~USGNovaGloveHandProfile() = default;
@@ -182,7 +156,6 @@ void USGNovaGloveHandProfile::SetNovaGloveHandProfileImpl(const FSGNovaGloveHand
const FSGNovaGloveHandProfileImpl& USGNovaGloveHandProfile::ToNovaGloveHandProfileImpl() const
{
Pimpl->SyncImplObject();
return Pimpl->NovaGloveHandProfileImpl;
}
@@ -203,8 +176,6 @@ USGHandInterpolator* USGNovaGloveHandProfile::GetInterpolationSet(UObject* Outer
bool USGNovaGloveHandProfile::Equals(const USGNovaGloveHandProfile* NovaGloveHandProfile) const
{
Pimpl->SyncImplObject();
FSGIC_FSGNovaGloveHandProfileImpl InstanceContainer{ToNovaGloveHandProfileImpl()};
FSGIC_FSGNovaGloveHandProfileImpl NovaGloveHandProfileContainer{NovaGloveHandProfile->ToNovaGloveHandProfileImpl()};
return SGCoreImpl_FSGNovaGloveHandProfileImpl_Equals(&InstanceContainer, &NovaGloveHandProfileContainer);
@@ -212,18 +183,12 @@ bool USGNovaGloveHandProfile::Equals(const USGNovaGloveHandProfile* NovaGloveHan
void USGNovaGloveHandProfile::Reset()
{
Pimpl->SyncImplObject();
FSGIC_FSGNovaGloveHandProfileImpl InstanceContainer{ToNovaGloveHandProfileImpl()};
SGCoreImpl_FSGNovaGloveHandProfileImpl_Reset(&InstanceContainer);
Pimpl->SyncUProperties();
}
FString USGNovaGloveHandProfile::SGSerialize() const
{
Pimpl->SyncImplObject();
FSGIC_FSGNovaGloveHandProfileImpl InstanceContainer{ToNovaGloveHandProfileImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGNovaGloveHandProfileImpl_Serialize(&InstanceContainer, &OutStringContainer);
@@ -241,11 +206,3 @@ void USGNovaGloveHandProfile::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGNovaGloveHandProfile::FImpl::SyncUProperties()
{
}
void USGNovaGloveHandProfile::FImpl::SyncImplObject()
{
}
@@ -69,13 +69,6 @@ struct USGNovaGloveInfo::FImpl
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGNovaGloveInfo* USGNovaGloveInfo::NewNovaGloveInfo(UObject* Outer, const FSGNovaGloveInfoImpl& NovaGloveInfoImpl)
@@ -134,30 +127,19 @@ USGNovaGloveInfo* USGNovaGloveInfo::Deserialize(UObject* Outer, const FString& S
}
USGNovaGloveInfo::USGNovaGloveInfo()
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGNovaGloveInfoImpl OutNovaGloveInfoImplContainer;
SGCoreImpl_FSGNovaGloveInfoImpl_ctor(&OutNovaGloveInfoImplContainer);
Pimpl->NovaGloveInfoImpl = MoveTemp(OutNovaGloveInfoImplContainer.NovaGloveInfoImpl);
Pimpl->SyncUProperties();
}
USGNovaGloveInfo::USGNovaGloveInfo(
const FString& DeviceId,
const FString& HardwareVersion, const int32 FirmwareVersion, const int32 SubFirmwareVersion,
const bool bRightHanded, const FQuat& ImuCorrection, const int32 NumberOfSensors)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGNovaGloveInfoImpl OutNovaGloveInfoImplContainer;
FSGIC_FString DeviceIdContainer{DeviceId};
@@ -169,19 +151,12 @@ USGNovaGloveInfo::USGNovaGloveInfo(
bRightHanded, &ImuCorrectionContainer, NumberOfSensors);
Pimpl->NovaGloveInfoImpl = MoveTemp(OutNovaGloveInfoImplContainer.NovaGloveInfoImpl);
Pimpl->SyncUProperties();
}
USGNovaGloveInfo::USGNovaGloveInfo(const FSGNovaGloveInfoImpl& NovaGloveInfoImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
SetNovaGloveInfoImpl(NovaGloveInfoImpl);
Pimpl->SyncUProperties();
}
USGNovaGloveInfo::~USGNovaGloveInfo() = default;
@@ -196,13 +171,11 @@ void USGNovaGloveInfo::SetNovaGloveInfoImpl(const FSGNovaGloveInfoImpl& NovaGlov
const FSGNovaGloveInfoImpl& USGNovaGloveInfo::ToNovaGloveInfoImpl() const
{
Pimpl->SyncImplObject();
return Pimpl->NovaGloveInfoImpl;
}
FSGNovaGloveInfoImpl& USGNovaGloveInfo::ToNovaGloveInfoImpl()
{
Pimpl->SyncImplObject();
return Pimpl->NovaGloveInfoImpl;
}
@@ -264,8 +237,6 @@ int32 USGNovaGloveInfo::GetNumberOfSensors() const
bool USGNovaGloveInfo::Equals(const USGNovaGloveInfo* NovaGloveInfo) const
{
Pimpl->SyncImplObject();
FSGIC_FSGNovaGloveInfoImpl InstanceContainer{ToNovaGloveInfoImpl()};
FSGIC_FSGNovaGloveInfoImpl NovaGloveInfoImplContainer{NovaGloveInfo->ToNovaGloveInfoImpl()};
return SGCoreImpl_FSGNovaGloveInfoImpl_Equals(&InstanceContainer, &NovaGloveInfoImplContainer);
@@ -273,8 +244,6 @@ bool USGNovaGloveInfo::Equals(const USGNovaGloveInfo* NovaGloveInfo) const
FString USGNovaGloveInfo::ToString() const
{
Pimpl->SyncImplObject();
FSGIC_FSGNovaGloveInfoImpl InstanceContainer{ToNovaGloveInfoImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGNovaGloveInfoImpl_ToString(&InstanceContainer, &OutStringContainer);
@@ -283,8 +252,6 @@ FString USGNovaGloveInfo::ToString() const
FString USGNovaGloveInfo::SGSerialize() const
{
Pimpl->SyncImplObject();
FSGIC_FSGNovaGloveInfoImpl InstanceContainer{ToNovaGloveInfoImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGNovaGloveInfoImpl_Serialize(&InstanceContainer, &OutStringContainer);
@@ -302,11 +269,3 @@ void USGNovaGloveInfo::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGNovaGloveInfo::FImpl::SyncUProperties()
{
}
void USGNovaGloveInfo::FImpl::SyncImplObject()
{
}
@@ -73,13 +73,6 @@ struct USGNovaGloveSensorData::FImpl
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGNovaGloveSensorData* USGNovaGloveSensorData::NewNovaGloveSensorData(
@@ -156,29 +149,18 @@ USGNovaGloveSensorData* USGNovaGloveSensorData::Deserialize(UObject* Outer, cons
}
USGNovaGloveSensorData::USGNovaGloveSensorData()
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGNovaGloveSensorDataImpl OutNovaGloveSensorDataImplContainer;
SGCoreImpl_FSGNovaGloveSensorDataImpl_ctor(&OutNovaGloveSensorDataImplContainer);
Pimpl->NovaGloveSensorDataImpl = MoveTemp(OutNovaGloveSensorDataImplContainer.NovaGloveSensorDataImpl);
Pimpl->SyncUProperties();
}
USGNovaGloveSensorData::USGNovaGloveSensorData(const TArray<FVector>& Values, const int32 ParsedValues,
const FQuat& ImuRotation, const bool bImuParsed,
const float BatteryLevel, const bool bCharging)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGNovaGloveSensorDataImpl OutNovaGloveSensorDataImplContainer;
FSGIC_TArray_FVector ValuesContainer{Values};
@@ -188,18 +170,12 @@ USGNovaGloveSensorData::USGNovaGloveSensorData(const TArray<FVector>& Values, co
&ImuRotationContainer, bImuParsed, BatteryLevel, bCharging);
Pimpl->NovaGloveSensorDataImpl = MoveTemp(OutNovaGloveSensorDataImplContainer.NovaGloveSensorDataImpl);
Pimpl->SyncUProperties();
}
USGNovaGloveSensorData::USGNovaGloveSensorData(const TArray<FVector>& Values, const int32 ParsedValues,
const FRotator& ImuRotation, const bool bImuParsed,
const float BatteryLevel, const bool bCharging)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGNovaGloveSensorDataImpl OutNovaGloveSensorDataImplContainer;
FSGIC_TArray_FVector ValuesContainer{Values};
@@ -209,19 +185,12 @@ USGNovaGloveSensorData::USGNovaGloveSensorData(const TArray<FVector>& Values, co
&ImuRotationContainer, bImuParsed, BatteryLevel, bCharging);
Pimpl->NovaGloveSensorDataImpl = MoveTemp(OutNovaGloveSensorDataImplContainer.NovaGloveSensorDataImpl);
Pimpl->SyncUProperties();
}
USGNovaGloveSensorData::USGNovaGloveSensorData(const FSGNovaGloveSensorDataImpl& NovaGloveSensorDataImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
SetNovaGloveSensorDataImpl(NovaGloveSensorDataImpl);
Pimpl->SyncUProperties();
}
USGNovaGloveSensorData::~USGNovaGloveSensorData() = default;
@@ -236,7 +205,6 @@ void USGNovaGloveSensorData::SetNovaGloveSensorDataImpl(const FSGNovaGloveSensor
const FSGNovaGloveSensorDataImpl& USGNovaGloveSensorData::ToNovaGloveSensorDataImpl() const
{
Pimpl->SyncImplObject();
return Pimpl->NovaGloveSensorDataImpl;
}
@@ -290,8 +258,6 @@ bool USGNovaGloveSensorData::IsCharging() const
bool USGNovaGloveSensorData::Equals(const USGNovaGloveSensorData* NovaGloveSensorData) const
{
Pimpl->SyncImplObject();
FSGIC_FSGNovaGloveSensorDataImpl InstanceContainer{ToNovaGloveSensorDataImpl()};
FSGIC_FSGNovaGloveSensorDataImpl NovaGloveSensorDataContainer{NovaGloveSensorData->ToNovaGloveSensorDataImpl()};
return SGCoreImpl_FSGNovaGloveSensorDataImpl_Equals(&InstanceContainer, &NovaGloveSensorDataContainer);
@@ -299,8 +265,6 @@ bool USGNovaGloveSensorData::Equals(const USGNovaGloveSensorData* NovaGloveSenso
FString USGNovaGloveSensorData::ToString() const
{
Pimpl->SyncImplObject();
FSGIC_FSGNovaGloveSensorDataImpl InstanceContainer{ToNovaGloveSensorDataImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGNovaGloveSensorDataImpl_ToString(&InstanceContainer, &OutStringContainer);
@@ -309,8 +273,6 @@ FString USGNovaGloveSensorData::ToString() const
FString USGNovaGloveSensorData::SGSerialize() const
{
Pimpl->SyncImplObject();
FSGIC_FSGNovaGloveSensorDataImpl InstanceContainer{ToNovaGloveSensorDataImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGNovaGloveSensorDataImpl_Serialize(&InstanceContainer, &OutStringContainer);
@@ -328,11 +290,3 @@ void USGNovaGloveSensorData::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGNovaGloveSensorData::FImpl::SyncUProperties()
{
}
void USGNovaGloveSensorData::FImpl::SyncImplObject()
{
}
@@ -67,42 +67,6 @@
#include "SGInterop/SGIC_TArray_TArray_FVector.h"
#include "SGInterop/SGIC_TSharedPtr_FSGSenseGloveImpl.h"
struct USGSenseGlove::FImpl
{
/************************
* Member variables
************************/
/************************
* Owner object
************************/
USGDevice* Owner;
/************************
* Constructor / Destructor
************************/
explicit FImpl(USGSenseGlove* InOwner);
~FImpl();
/************************
* Default copy constructor & copy assignment operator
************************/
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGSenseGlove* USGSenseGlove::NewSenseGlove(UObject* Outer, const FSGSenseGloveImpl& SenseGloveImpl)
{
USGSenseGlove* Instance = NewObject<USGSenseGlove>(Outer);
@@ -354,126 +318,58 @@ void USGSenseGlove::CalculateWristLocation(const FVector& ReferencePosition, con
}
USGSenseGlove::USGSenseGlove()
: USGHapticGlove(),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGHapticGlove()
{
FSGIC_TSharedPtr_FSGSenseGloveImpl OutSharedPtrContainer;
SGCoreImpl_FSGSenseGloveImpl_ctor_MakeShared(&OutSharedPtrContainer);
SetSGDeviceImpl(OutSharedPtrContainer.Ptr.ToSharedRef());
Pimpl->SyncUProperties();
}
USGSenseGlove::USGSenseGlove(const USGSenseGloveInfo& Model)
: USGHapticGlove(),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGHapticGlove()
{
FSGIC_TSharedPtr_FSGSenseGloveImpl OutSharedPtrContainer;
FSGIC_FSGSenseGloveInfoImpl ModelContainer{Model.ToSenseGloveInfoImpl()};
SGCoreImpl_FSGSenseGloveImpl_ctor_Model_MakeShared(&OutSharedPtrContainer, &ModelContainer);
SetSGDeviceImpl(OutSharedPtrContainer.Ptr.ToSharedRef());
Pimpl->SyncUProperties();
}
USGSenseGlove::USGSenseGlove(const FSGDeviceImpl& SGDeviceImpl)
: USGHapticGlove(SGDeviceImpl),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGHapticGlove(SGDeviceImpl)
{
Pimpl->SyncUProperties();
}
USGSenseGlove::USGSenseGlove(const FSGHapticGloveImpl& HapticGloveImpl)
: USGHapticGlove(HapticGloveImpl),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGHapticGlove(HapticGloveImpl)
{
Pimpl->SyncUProperties();
}
USGSenseGlove::USGSenseGlove(const FSGSenseGloveImpl& SenseGloveImpl)
: USGHapticGlove(SenseGloveImpl),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGHapticGlove(SenseGloveImpl)
{
Pimpl->SyncUProperties();
}
USGSenseGlove::USGSenseGlove(TSharedRef<FSGDeviceImpl> SGDeviceImpl)
: USGHapticGlove(MoveTemp(SGDeviceImpl)),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGHapticGlove(MoveTemp(SGDeviceImpl))
{
Pimpl->SyncUProperties();
}
USGSenseGlove::USGSenseGlove(TSharedRef<FSGHapticGloveImpl> HapticGloveImpl)
: USGHapticGlove(MoveTemp(HapticGloveImpl)),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGHapticGlove(MoveTemp(HapticGloveImpl))
{
Pimpl->SyncUProperties();
}
USGSenseGlove::USGSenseGlove(TSharedRef<FSGSenseGloveImpl> SenseGloveImpl)
: USGHapticGlove(MoveTemp(SenseGloveImpl)),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGHapticGlove(MoveTemp(SenseGloveImpl))
{
Pimpl->SyncUProperties();
}
USGSenseGlove::~USGSenseGlove() = default;
TSharedRef<FSGSenseGloveImpl> USGSenseGlove::ToSenseGloveImpl() const
{
SyncImplObject();
return FSGDeviceImplCast::ToSenseGloveImpl(ToSGDeviceImpl());
}
void USGSenseGlove::SyncImplObject() const
{
Super::SyncImplObject();
Pimpl->SyncImplObject();
}
void USGSenseGlove::SyncUProperties()
{
Super::SyncUProperties();
Pimpl->SyncUProperties();
}
USGSenseGloveInfo* USGSenseGlove::GetGloveModel(UObject* Outer) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_FSGSenseGloveInfoImpl OutModelContainer;
SGCoreImpl_FSGSenseGloveImpl_GetGloveModel(&InstanceContainer, &OutModelContainer);
@@ -483,16 +379,12 @@ USGSenseGloveInfo* USGSenseGlove::GetGloveModel(UObject* Outer) const
bool USGSenseGlove::IsRight() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
return SGCoreImpl_FSGSenseGloveImpl_IsRight(&InstanceContainer);
}
ESGDeviceType USGSenseGlove::GetDeviceType() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_ESGDeviceType OutTypeContainer;
SGCoreImpl_FSGSenseGloveImpl_GetDeviceType(&InstanceContainer, &OutTypeContainer);
@@ -501,8 +393,6 @@ ESGDeviceType USGSenseGlove::GetDeviceType() const
FString USGSenseGlove::GetDeviceId() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_FString OutIdContainer;
SGCoreImpl_FSGSenseGloveImpl_GetDeviceId(&InstanceContainer, &OutIdContainer);
@@ -511,8 +401,6 @@ FString USGSenseGlove::GetDeviceId() const
FString USGSenseGlove::GetHardwareVersion() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_FString OutVersionContainer;
SGCoreImpl_FSGSenseGloveImpl_GetHardwareVersion(&InstanceContainer, &OutVersionContainer);
@@ -521,24 +409,18 @@ FString USGSenseGlove::GetHardwareVersion() const
int32 USGSenseGlove::GetFirmwareVersion() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
return SGCoreImpl_FSGSenseGloveImpl_GetFirmwareVersion(&InstanceContainer);
}
int32 USGSenseGlove::GetSubFirmwareVersion() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
return SGCoreImpl_FSGSenseGloveImpl_GetSubFirmwareVersion(&InstanceContainer);
}
bool USGSenseGlove::GetSensorData(UObject* Outer, USGSenseGloveSensorData*& OutSensorData) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_FSGSenseGloveSensorDataImpl OutSensorDataContainer;
const bool bResult = SGCoreImpl_FSGSenseGloveImpl_GetSensorData(&InstanceContainer, &OutSensorDataContainer);
@@ -554,14 +436,10 @@ bool USGSenseGlove::GetSensorData(UObject* Outer, USGSenseGloveSensorData*& OutS
bool USGSenseGlove::GetImuRotation(FQuat& OutImu)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_FQuat OutImuContainer;
const bool bResult = SGCoreImpl_FSGSenseGloveImpl_GetImuRotation(&InstanceContainer, &OutImuContainer);
SyncUProperties();
if (bResult)
{
OutImu = MoveTemp(OutImuContainer.Quat);
@@ -572,14 +450,10 @@ bool USGSenseGlove::GetImuRotation(FQuat& OutImu)
bool USGSenseGlove::GetImuRotation(FRotator& OutImu)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_FQuat OutImuContainer;
const bool bResult = SGCoreImpl_FSGSenseGloveImpl_GetImuRotation(&InstanceContainer, &OutImuContainer);
SyncUProperties();
if (bResult)
{
OutImu = OutImuContainer.Quat.Rotator();
@@ -590,15 +464,11 @@ bool USGSenseGlove::GetImuRotation(FRotator& OutImu)
bool USGSenseGlove::GetGlovePose(UObject* Outer, USGSenseGlovePose*& OutGlovePose)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_FSGSenseGlovePoseImpl OutGlovePoseContainer;
const bool bResult = SGCoreImpl_FSGSenseGloveImpl_GetGlovePose_OutGlovePose(
&InstanceContainer, &OutGlovePoseContainer);
SyncUProperties();
if (bResult)
{
OutGlovePose = USGSenseGlovePose::NewSenseGlovePose(Outer, MoveTemp(OutGlovePoseContainer.SenseGlovePoseImpl));
@@ -610,16 +480,12 @@ bool USGSenseGlove::GetGlovePose(UObject* Outer, USGSenseGlovePose*& OutGlovePos
bool USGSenseGlove::GetGlovePose(
UObject* Outer, const USGSenseGloveSensorData* SensorData, USGSenseGlovePose*& OutGlovePose)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_FSGSenseGloveSensorDataImpl SensorDataContainer{SensorData->ToSenseGloveSensorDataImpl()};
FSGIC_FSGSenseGlovePoseImpl OutGlovePoseContainer;
const bool bResult = SGCoreImpl_FSGSenseGloveImpl_GetGlovePose_SensorData_OutGlovePose(
&InstanceContainer, &SensorDataContainer, &OutGlovePoseContainer);
SyncUProperties();
if (bResult)
{
OutGlovePose = USGSenseGlovePose::NewSenseGlovePose(Outer, MoveTemp(OutGlovePoseContainer.SenseGlovePoseImpl));
@@ -632,8 +498,6 @@ bool USGSenseGlove::GetHandPose(
UObject* Outer, const USGBasicHandModel* HandModel, const USGSenseGloveHandProfile* Profile,
USGHandPose*& OutHandPose)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_FSGBasicHandModelImpl HandModelContainer{HandModel->ToBasicHandModelImpl()};
FSGIC_FSGSenseGloveHandProfileImpl ProfileContainer{Profile->ToSenseGloveHandProfileImpl()};
@@ -641,8 +505,6 @@ bool USGSenseGlove::GetHandPose(
const bool bResult = SGCoreImpl_FSGSenseGloveImpl_GetHandPose_HandModel_Profile_OutHandPose(
&InstanceContainer, &HandModelContainer, &ProfileContainer, &OutHandPoseContainer);
SyncUProperties();
if (bResult)
{
OutHandPose = USGHandPose::NewHandPose(Outer, MoveTemp(OutHandPoseContainer.HandPoseImpl));
@@ -654,8 +516,6 @@ bool USGSenseGlove::GetHandPose(
bool USGSenseGlove::GetHandPose(
UObject* Outer, const USGBasicHandModel* HandGeometry, const USGHandProfile* HandProfile, USGHandPose*& OutHandPose)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_FSGBasicHandModelImpl HandGeometryContainer{HandGeometry->ToBasicHandModelImpl()};
FSGIC_FSGHandProfileImpl ProfileContainer{HandProfile->ToHandProfileImpl()};
@@ -663,8 +523,6 @@ bool USGSenseGlove::GetHandPose(
const bool bResult = SGCoreImpl_FSGSenseGloveImpl_GetHandPose_HandGeometry_HandProfile_OutHandPose(
&InstanceContainer, &HandGeometryContainer, &ProfileContainer, &OutHandPoseContainer);
SyncUProperties();
if (bResult)
{
OutHandPose = USGHandPose::NewHandPose(Outer, MoveTemp(OutHandPoseContainer.HandPoseImpl));
@@ -675,16 +533,12 @@ bool USGSenseGlove::GetHandPose(
bool USGSenseGlove::GetHandPose(UObject* Outer, const USGHandProfile* HandProfile, USGHandPose*& OutHandPose)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_FSGHandProfileImpl ProfileContainer{HandProfile->ToHandProfileImpl()};
FSGIC_FSGHandPoseImpl OutHandPoseContainer;
const bool bResult = SGCoreImpl_FSGSenseGloveImpl_GetHandPose_HandProfile_OutHandPose(
&InstanceContainer, &ProfileContainer, &OutHandPoseContainer);
SyncUProperties();
if (bResult)
{
OutHandPose = USGHandPose::NewHandPose(Outer, MoveTemp(OutHandPoseContainer.HandPoseImpl));
@@ -696,8 +550,6 @@ bool USGSenseGlove::GetHandPose(UObject* Outer, const USGHandProfile* HandProfil
bool USGSenseGlove::SendHaptics(const USGForceFeedbackCommand* ForceFeedbackCommand, const USGBuzzCommand* BuzzCommand,
ESGSenseGloveThumperCommand ThumperCommand)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_FSGForceFeedbackCommandImpl ForceFeedbackCommandContainer{
ForceFeedbackCommand->ToForceFeedbackCommandImpl().Get()
@@ -710,55 +562,39 @@ bool USGSenseGlove::SendHaptics(const USGForceFeedbackCommand* ForceFeedbackComm
SGCoreImpl_FSGSenseGloveImpl_SendHaptics_ForceFeedbackCommand_BuzzCommand_ESenseGloveThumperCommand(
&InstanceContainer, &ForceFeedbackCommandContainer, &BuzzCommandContainer, &ThumperCommandContainer);
SyncUProperties();
return bResult;
}
bool USGSenseGlove::SendHaptics(ESGSenseGloveThumperCommand ThumperCommand)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_ESGSenseGloveThumperCommand ThumperCommandContainer{ThumperCommand};
const bool bResult = SGCoreImpl_FSGSenseGloveImpl_SendHaptics_ThumperCommand(
&InstanceContainer, &ThumperCommandContainer);
SyncUProperties();
return bResult;
}
void USGSenseGlove::SendHaptics(const USGForceFeedbackCommand* ForceFeedbackCommand)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_FSGForceFeedbackCommandImpl ForceFeedbackCommandContainer{
ForceFeedbackCommand->ToForceFeedbackCommandImpl().Get()
};
SGCoreImpl_FSGSenseGloveImpl_SendHaptics_ForceFeedbackCommand(&InstanceContainer, &ForceFeedbackCommandContainer);
SyncUProperties();
}
void USGSenseGlove::SendHaptics(const USGBuzzCommand* BuzzCommand)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_FSGBuzzCommandImpl BuzzCommandContainer{BuzzCommand->ToBuzzCommandImpl().Get()};
SGCoreImpl_FSGSenseGloveImpl_SendHaptics_ForceFeedbackCommand(&InstanceContainer, &BuzzCommandContainer);
SyncUProperties();
}
void USGSenseGlove::SendHaptics(const USGForceFeedbackCommand* ForceFeedbackCommand,
const USGBuzzCommand* BuzzCommand,
const USGThumperCommand* ThumperCommand)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_FSGForceFeedbackCommandImpl ForceFeedbackCommandContainer{
ForceFeedbackCommand->ToForceFeedbackCommandImpl().Get()
@@ -767,21 +603,15 @@ void USGSenseGlove::SendHaptics(const USGForceFeedbackCommand* ForceFeedbackComm
FSGIC_FSGThumperCommandImpl ThumperCommandContainer{ThumperCommand->ToThumperCommandImpl()};
SGCoreImpl_FSGSenseGloveImpl_SendHaptics_ForceFeedbackCommand_BuzzCommand_ThumperCommand(
&InstanceContainer, &ForceFeedbackCommandContainer, &BuzzCommandContainer, &ThumperCommandContainer);
SyncUProperties();
}
bool USGSenseGlove::GetCalibrationValues(TArray<FVector>& OutValues)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_TArray_FVector OutValuesContainer;
const bool bResult = SGCoreImpl_FSGSenseGloveImpl_GetCalibrationValues_OutValues(
&InstanceContainer, &OutValuesContainer);
SyncUProperties();
if (bResult)
{
OutValues = MoveTemp(OutValuesContainer.Array);
@@ -792,18 +622,12 @@ bool USGSenseGlove::GetCalibrationValues(TArray<FVector>& OutValues)
void USGSenseGlove::ResetCalibrationRange()
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
SGCoreImpl_FSGSenseGloveImpl_ResetCalibrationRange(&InstanceContainer);
SyncUProperties();
}
void USGSenseGlove::ApplyCalibration(UObject* Outer, USGHandProfile*& OutProfile) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_FSGHandProfileImpl OutProfileContainer;
SGCoreImpl_FSGSenseGloveImpl_ApplyCalibration_HandProfile(&InstanceContainer, &OutProfileContainer);
@@ -812,8 +636,6 @@ void USGSenseGlove::ApplyCalibration(UObject* Outer, USGHandProfile*& OutProfile
void USGSenseGlove::ApplyCalibration(UObject* Outer, USGSenseGloveHandProfile*& OutProfile) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_FSGSenseGloveHandProfileImpl OutProfileContainer;
SGCoreImpl_FSGSenseGloveImpl_ApplyCalibration_SenseGloveHandProfile(&InstanceContainer, &OutProfileContainer);
@@ -825,8 +647,6 @@ void USGSenseGlove::GetGloveLocation(const FVector& ReferencePosition, const FQu
const ESGPositionalTrackingHardware TrackingHardware,
FVector& OutGlovePosition, FQuat& OutGloveRotation) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_FVector ReferencePositionContainer{ReferencePosition};
FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation};
@@ -848,8 +668,6 @@ void USGSenseGlove::GetGloveLocation(const FVector& ReferencePosition, const FRo
const ESGPositionalTrackingHardware TrackingHardware,
FVector& OutGlovePosition, FRotator& OutGloveRotation) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_FVector ReferencePositionContainer{ReferencePosition};
FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation.Quaternion()};
@@ -871,8 +689,6 @@ void USGSenseGlove::GetGloveLocation(const FVector& ReferencePosition, const FQu
const ESGPositionalTrackingHardware TrackingHardware, const ESGFinger MountedOn,
FVector& OutGlovePosition, FQuat& OutGloveRotation) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_FVector ReferencePositionContainer{ReferencePosition};
FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation};
@@ -895,8 +711,6 @@ void USGSenseGlove::GetGloveLocation(const FVector& ReferencePosition, const FRo
const ESGPositionalTrackingHardware TrackingHardware, const ESGFinger MountedOn,
FVector& OutGlovePosition, FRotator& OutGloveRotation) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_FVector ReferencePositionContainer{ReferencePosition};
FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation.Quaternion()};
@@ -919,8 +733,6 @@ void USGSenseGlove::GetWristLocation(const FVector& ReferencePosition, const FQu
const ESGPositionalTrackingHardware TrackingHardware,
FVector& OutWristPosition, FQuat& OutWristRotation) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_FVector ReferencePositionContainer{ReferencePosition};
FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation};
@@ -941,8 +753,6 @@ void USGSenseGlove::GetWristLocation(const FVector& ReferencePosition, const FRo
const ESGPositionalTrackingHardware TrackingHardware,
FVector& OutWristPosition, FRotator& OutWristRotation) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_FVector ReferencePositionContainer{ReferencePosition};
FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation.Quaternion()};
@@ -965,8 +775,6 @@ void USGSenseGlove::GetWristLocation(const FVector& ReferencePosition, const FQu
const FQuat& GloveWristRotationOffset,
FVector& OutWristPosition, FQuat& OutWristRotation) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_FVector ReferencePositionContainer{ReferencePosition};
FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation};
@@ -992,8 +800,6 @@ void USGSenseGlove::GetWristLocation(const FVector& ReferencePosition, const FRo
const FRotator& GloveWristRotationOffset,
FVector& OutWristPosition, FRotator& OutWristRotation) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_FVector ReferencePositionContainer{ReferencePosition};
FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation.Quaternion()};
@@ -1015,30 +821,8 @@ void USGSenseGlove::GetWristLocation(const FVector& ReferencePosition, const FRo
FString USGSenseGlove::ToString() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGSenseGloveImpl_ToString(&InstanceContainer, &OutStringContainer);
return MoveTemp(OutStringContainer.String);;
}
USGSenseGlove::FImpl::FImpl(USGSenseGlove* InOwner)
: Owner(InOwner)
{
}
USGSenseGlove::FImpl::~FImpl() = default;
void USGSenseGlove::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGSenseGlove::FImpl::SyncUProperties()
{
}
void USGSenseGlove::FImpl::SyncImplObject()
{
}
@@ -75,13 +75,6 @@ struct USGSenseGloveHandProfile::FImpl
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGSenseGloveHandProfile* USGSenseGloveHandProfile::NewSenseGloveHandProfile(
@@ -142,29 +135,18 @@ FVector USGSenseGloveHandProfile::GetDefaultThimbleOffset()
}
USGSenseGloveHandProfile::USGSenseGloveHandProfile()
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGSenseGloveHandProfileImpl OutSenseGloveHandProfileImplContainer;
SGCoreImpl_FSGSenseGloveHandProfileImpl_ctor(&OutSenseGloveHandProfileImplContainer);
Pimpl->SenseGloveHandProfileImpl = MoveTemp(OutSenseGloveHandProfileImplContainer.SenseGloveHandProfileImpl);
Pimpl->SyncUProperties();
}
USGSenseGloveHandProfile::USGSenseGloveHandProfile(const bool bRightHanded, const USGHandInterpolator* Interpolator,
const ESGThumbSolver ThumbSolver, const ESGFingerSolver FingerSolver,
const TArray<FVector>& FingerThimbleOffset)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGSenseGloveHandProfileImpl OutSenseGloveHandProfileImplContainer;
FSGIC_FSGHandInterpolatorImpl InterpolatorContainer{Interpolator->ToHandInterpolatorImpl()};
@@ -176,19 +158,12 @@ USGSenseGloveHandProfile::USGSenseGloveHandProfile(const bool bRightHanded, cons
&ThumbSolverContainer, &FingerSolverContainer, &FingerThimbleOffsetContainer);
Pimpl->SenseGloveHandProfileImpl = MoveTemp(OutSenseGloveHandProfileImplContainer.SenseGloveHandProfileImpl);
Pimpl->SyncUProperties();
}
USGSenseGloveHandProfile::USGSenseGloveHandProfile(const FSGSenseGloveHandProfileImpl& SenseGloveHandProfileImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
SetSenseGloveHandProfileImpl(SenseGloveHandProfileImpl);
Pimpl->SyncUProperties();
}
USGSenseGloveHandProfile::~USGSenseGloveHandProfile() = default;
@@ -204,7 +179,6 @@ void USGSenseGloveHandProfile::SetSenseGloveHandProfileImpl(
const FSGSenseGloveHandProfileImpl& USGSenseGloveHandProfile::ToSenseGloveHandProfileImpl() const
{
Pimpl->SyncImplObject();
return Pimpl->SenseGloveHandProfileImpl;
}
@@ -249,8 +223,6 @@ TArray<FVector> USGSenseGloveHandProfile::GetFingerThimbleOffset() const
bool USGSenseGloveHandProfile::Equals(const USGSenseGloveHandProfile* SenseGloveHandProfile) const
{
Pimpl->SyncImplObject();
FSGIC_FSGSenseGloveHandProfileImpl InstanceContainer{ToSenseGloveHandProfileImpl()};
FSGIC_FSGSenseGloveHandProfileImpl SenseGloveHandProfileContainer{
SenseGloveHandProfile->ToSenseGloveHandProfileImpl()};
@@ -259,18 +231,12 @@ bool USGSenseGloveHandProfile::Equals(const USGSenseGloveHandProfile* SenseGlove
void USGSenseGloveHandProfile::Reset()
{
Pimpl->SyncImplObject();
FSGIC_FSGSenseGloveHandProfileImpl InstanceContainer{ToSenseGloveHandProfileImpl()};
SGCoreImpl_FSGSenseGloveHandProfileImpl_Reset(&InstanceContainer);
Pimpl->SyncUProperties();
}
FString USGSenseGloveHandProfile::SGSerialize() const
{
Pimpl->SyncImplObject();
FSGIC_FSGSenseGloveHandProfileImpl InstanceContainer{ToSenseGloveHandProfileImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGSenseGloveHandProfileImpl_Serialize(&InstanceContainer, &OutStringContainer);
@@ -288,11 +254,3 @@ void USGSenseGloveHandProfile::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGSenseGloveHandProfile::FImpl::SyncUProperties()
{
}
void USGSenseGloveHandProfile::FImpl::SyncImplObject()
{
}
@@ -48,6 +48,7 @@
#include "SGInterop/SGIC_TArray_FVector.h"
#include "SGInterop/SGIC_TArray_TArray_float.h"
#include "SGInterop/SGIC_TArray_TArray_FVector.h"
#include "SGUtils/SGArrayUtils.h"
struct USGSenseGloveInfo::FImpl
{
@@ -76,13 +77,6 @@ struct USGSenseGloveInfo::FImpl
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGSenseGloveInfo* USGSenseGloveInfo::NewSenseGloveInfo(UObject* Outer, const FSGSenseGloveInfoImpl& SenseGloveInfoImpl)
@@ -238,18 +232,12 @@ USGSenseGloveInfo* USGSenseGloveInfo::Deserialize(UObject* Outer, const FString&
}
USGSenseGloveInfo::USGSenseGloveInfo()
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGSenseGloveInfoImpl OutSenseGloveInfoImplContainer;
SGCoreImpl_FSGSenseGloveInfoImpl_ctor(&OutSenseGloveInfoImplContainer);
Pimpl->SenseGloveInfoImpl = MoveTemp(OutSenseGloveInfoImplContainer.SenseGloveInfoImpl);
Pimpl->SyncUProperties();
}
USGSenseGloveInfo::USGSenseGloveInfo(
@@ -258,12 +246,7 @@ USGSenseGloveInfo::USGSenseGloveInfo(
const bool bRightHanded, const int32 NumberOfSensors, const FQuat& ImuCorrection,
const TArray<FVector>& StartPositions, const TArray<FQuat>& StartRotations,
const TArray<TArray<FVector>>& GloveLengths, const TArray<bool>& Functions)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGSenseGloveInfoImpl OutSenseGloveInfoImplContainer;
FSGIC_FString DeviceIdContainer{DeviceId};
@@ -281,7 +264,6 @@ USGSenseGloveInfo::USGSenseGloveInfo(
&GloveLengthsContainer, &FunctionsContainer);
Pimpl->SenseGloveInfoImpl = MoveTemp(OutSenseGloveInfoImplContainer.SenseGloveInfoImpl);
Pimpl->SyncUProperties();
}
USGSenseGloveInfo::USGSenseGloveInfo(
@@ -290,12 +272,7 @@ USGSenseGloveInfo::USGSenseGloveInfo(
const bool bRightHanded, const int32 NumberOfSensors, const FRotator& ImuCorrection,
const TArray<FVector>& StartPositions, const TArray<FRotator>& StartRotations,
const TArray<TArray<FVector>>& GloveLengths, const TArray<bool>& Functions)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGSenseGloveInfoImpl OutSenseGloveInfoImplContainer;
FSGIC_FString DeviceIdContainer{DeviceId};
@@ -313,7 +290,6 @@ USGSenseGloveInfo::USGSenseGloveInfo(
&GloveLengthsContainer, &FunctionsContainer);
Pimpl->SenseGloveInfoImpl = MoveTemp(OutSenseGloveInfoImplContainer.SenseGloveInfoImpl);
Pimpl->SyncUProperties();
}
USGSenseGloveInfo::USGSenseGloveInfo(
@@ -341,7 +317,6 @@ USGSenseGloveInfo::USGSenseGloveInfo(
&GloveLengthsContainer, &FunctionsContainer);
Pimpl->SenseGloveInfoImpl = MoveTemp(OutSenseGloveInfoImplContainer.SenseGloveInfoImpl);
Pimpl->SyncUProperties();
}
USGSenseGloveInfo::USGSenseGloveInfo(
@@ -369,19 +344,12 @@ USGSenseGloveInfo::USGSenseGloveInfo(
&GloveLengthsContainer, &FunctionsContainer);
Pimpl->SenseGloveInfoImpl = MoveTemp(OutSenseGloveInfoImplContainer.SenseGloveInfoImpl);
Pimpl->SyncUProperties();
}
USGSenseGloveInfo::USGSenseGloveInfo(const FSGSenseGloveInfoImpl& SenseGloveInfoImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
SetSenseGloveInfoImpl(SenseGloveInfoImpl);
Pimpl->SyncUProperties();
}
USGSenseGloveInfo::~USGSenseGloveInfo() = default;
@@ -396,13 +364,11 @@ void USGSenseGloveInfo::SetSenseGloveInfoImpl(const FSGSenseGloveInfoImpl& Sense
const FSGSenseGloveInfoImpl& USGSenseGloveInfo::ToSenseGloveInfoImpl() const
{
Pimpl->SyncImplObject();
return Pimpl->SenseGloveInfoImpl;
}
FSGSenseGloveInfoImpl& USGSenseGloveInfo::ToSenseGloveInfoImpl()
{
Pimpl->SyncImplObject();
return Pimpl->SenseGloveInfoImpl;
}
@@ -504,8 +470,6 @@ TArray<bool> USGSenseGloveInfo::GetFunctions() const
FVector USGSenseGloveInfo::GetStartPosition(const ESGFinger Finger) const
{
Pimpl->SyncImplObject();
FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()};
FSGIC_FVector OutPositionContainer;
FSGIC_ESGFinger FingerContainer{Finger};
@@ -515,8 +479,6 @@ FVector USGSenseGloveInfo::GetStartPosition(const ESGFinger Finger) const
FQuat USGSenseGloveInfo::GetStartRotationQ(const ESGFinger Finger) const
{
Pimpl->SyncImplObject();
FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()};
FSGIC_FQuat OutRotationContainer;
FSGIC_ESGFinger FingerContainer{Finger};
@@ -526,8 +488,6 @@ FQuat USGSenseGloveInfo::GetStartRotationQ(const ESGFinger Finger) const
FRotator USGSenseGloveInfo::GetStartRotation(const ESGFinger Finger) const
{
Pimpl->SyncImplObject();
FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()};
FSGIC_FQuat OutRotationContainer;
FSGIC_ESGFinger FingerContainer{Finger};
@@ -537,8 +497,6 @@ FRotator USGSenseGloveInfo::GetStartRotation(const ESGFinger Finger) const
TArray<FVector> USGSenseGloveInfo::GetGloveLengths(const ESGFinger Finger) const
{
Pimpl->SyncImplObject();
FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()};
FSGIC_TArray_FVector OutLengths;
FSGIC_ESGFinger FingerContainer{Finger};
@@ -548,8 +506,6 @@ TArray<FVector> USGSenseGloveInfo::GetGloveLengths(const ESGFinger Finger) const
TArray<TArray<FVector>> USGSenseGloveInfo::ToGloveAngles(const TArray<TArray<float>>& SensorAngles) const
{
Pimpl->SyncImplObject();
FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()};
FSGIC_TArray_TArray_FVector OutAnglesContainer;
FSGIC_TArray_TArray_float SensorAnglesContainer{SensorAngles};
@@ -559,8 +515,6 @@ TArray<TArray<FVector>> USGSenseGloveInfo::ToGloveAngles(const TArray<TArray<flo
bool USGSenseGloveInfo::Equals(const USGSenseGloveInfo* SenseGloveInfo) const
{
Pimpl->SyncImplObject();
FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()};
FSGIC_FSGSenseGloveInfoImpl SenseGloveInfoImplContainer{SenseGloveInfo->ToSenseGloveInfoImpl()};
return SGCoreImpl_FSGSenseGloveInfoImpl_Equals(&InstanceContainer, &SenseGloveInfoImplContainer);
@@ -568,8 +522,6 @@ bool USGSenseGloveInfo::Equals(const USGSenseGloveInfo* SenseGloveInfo) const
FString USGSenseGloveInfo::ToString() const
{
Pimpl->SyncImplObject();
FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGSenseGloveInfoImpl_ToString(&InstanceContainer, &OutStringContainer);
@@ -578,8 +530,6 @@ FString USGSenseGloveInfo::ToString() const
FString USGSenseGloveInfo::ToString(const bool bShortNotation) const
{
Pimpl->SyncImplObject();
FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGSenseGloveInfoImpl_ToString_bShortNotation(&InstanceContainer, &OutStringContainer, bShortNotation);
@@ -588,8 +538,6 @@ FString USGSenseGloveInfo::ToString(const bool bShortNotation) const
FString USGSenseGloveInfo::SGSerialize() const
{
Pimpl->SyncImplObject();
FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGSenseGloveInfoImpl_Serialize(&InstanceContainer, &OutStringContainer);
@@ -607,11 +555,3 @@ void USGSenseGloveInfo::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGSenseGloveInfo::FImpl::SyncUProperties()
{
}
void USGSenseGloveInfo::FImpl::SyncImplObject()
{
}
@@ -49,6 +49,7 @@
#include "SGInterop/SGIC_TArray_FVector.h"
#include "SGInterop/SGIC_TArray_TArray_FQuat.h"
#include "SGInterop/SGIC_TArray_TArray_FVector.h"
#include "SGUtils/SGArrayUtils.h"
struct USGSenseGlovePose::FImpl
{
@@ -77,13 +78,6 @@ struct USGSenseGlovePose::FImpl
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGSenseGlovePose* USGSenseGlovePose::NewSenseGlovePose(UObject* Outer, const FSGSenseGlovePoseImpl& SenseGlovePoseImpl)
@@ -196,30 +190,19 @@ USGSenseGlovePose* USGSenseGlovePose::Deserialize(UObject* Outer, const FString&
}
USGSenseGlovePose::USGSenseGlovePose()
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGSenseGlovePoseImpl OutSenseGlovePoseImplContainer;
SGCoreImpl_FSGSenseGlovePoseImpl_ctor(&OutSenseGlovePoseImplContainer);
Pimpl->SenseGlovePoseImpl = MoveTemp(OutSenseGlovePoseImplContainer.SenseGlovePoseImpl);
Pimpl->SyncUProperties();
}
USGSenseGlovePose::USGSenseGlovePose(const bool bRightHanded,
const TArray<TArray<FVector>>& JointPositions,
const TArray<TArray<FQuat>>& JointRotations,
const TArray<TArray<FVector>>& GloveAngles)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGSenseGlovePoseImpl OutSenseGlovePoseImplContainer;
FSGIC_TArray_TArray_FVector JointPositionsContainer{JointPositions};
@@ -230,19 +213,13 @@ USGSenseGlovePose::USGSenseGlovePose(const bool bRightHanded,
&JointRotationsContainer, &GloveAnglesContainer);
Pimpl->SenseGlovePoseImpl = MoveTemp(OutSenseGlovePoseImplContainer.SenseGlovePoseImpl);
Pimpl->SyncUProperties();
}
USGSenseGlovePose::USGSenseGlovePose(const bool bRightHanded,
const TArray<TArray<FVector>>& JointPositions,
const TArray<TArray<FRotator>>& JointRotations,
const TArray<TArray<FVector>>& GloveAngles)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGSenseGlovePoseImpl OutSenseGlovePoseImplContainer;
FSGIC_TArray_TArray_FVector JointPositionsContainer{JointPositions};
@@ -253,7 +230,6 @@ USGSenseGlovePose::USGSenseGlovePose(const bool bRightHanded,
&JointRotationsContainer, &GloveAnglesContainer);
Pimpl->SenseGlovePoseImpl = MoveTemp(OutSenseGlovePoseImplContainer.SenseGlovePoseImpl);
Pimpl->SyncUProperties();
}
USGSenseGlovePose::USGSenseGlovePose(const bool bRightHanded,
@@ -276,7 +252,6 @@ USGSenseGlovePose::USGSenseGlovePose(const bool bRightHanded,
&JointRotationsContainer, &GloveAnglesContainer);
Pimpl->SenseGlovePoseImpl = MoveTemp(OutSenseGlovePoseImplContainer.SenseGlovePoseImpl);
Pimpl->SyncUProperties();
}
USGSenseGlovePose::USGSenseGlovePose(const bool bRightHanded,
@@ -299,19 +274,12 @@ USGSenseGlovePose::USGSenseGlovePose(const bool bRightHanded,
&JointRotationsContainer, &GloveAnglesContainer);
Pimpl->SenseGlovePoseImpl = MoveTemp(OutSenseGlovePoseImplContainer.SenseGlovePoseImpl);
Pimpl->SyncUProperties();
}
USGSenseGlovePose::USGSenseGlovePose(const FSGSenseGlovePoseImpl& SenseGlovePoseImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
SetSenseGlovePoseImpl(SenseGlovePoseImpl);
Pimpl->SyncUProperties();
}
USGSenseGlovePose::~USGSenseGlovePose() = default;
@@ -326,7 +294,6 @@ void USGSenseGlovePose::SetSenseGlovePoseImpl(const FSGSenseGlovePoseImpl& Sense
const FSGSenseGlovePoseImpl& USGSenseGlovePose::ToSenseGlovePoseImpl() const
{
Pimpl->SyncImplObject();
return Pimpl->SenseGlovePoseImpl;
}
@@ -370,8 +337,6 @@ TArray<TArray<FVector>> USGSenseGlovePose::GetGloveAngles() const
TArray<FVector> USGSenseGlovePose::GetThimblePositions() const
{
Pimpl->SyncImplObject();
FSGIC_FSGSenseGlovePoseImpl InstanceContainer{ToSenseGlovePoseImpl()};
FSGIC_TArray_FVector OutPositionsContainer;
SGCoreImpl_FSGSenseGlovePoseImpl_GetThimblePositions(&InstanceContainer, &OutPositionsContainer);
@@ -380,8 +345,6 @@ TArray<FVector> USGSenseGlovePose::GetThimblePositions() const
TArray<FQuat> USGSenseGlovePose::GetThimbleRotationsQ() const
{
Pimpl->SyncImplObject();
FSGIC_FSGSenseGlovePoseImpl InstanceContainer{ToSenseGlovePoseImpl()};
FSGIC_TArray_FQuat OutRotationsContainer;
SGCoreImpl_FSGSenseGlovePoseImpl_GetThimbleRotations(&InstanceContainer, &OutRotationsContainer);
@@ -390,8 +353,6 @@ TArray<FQuat> USGSenseGlovePose::GetThimbleRotationsQ() const
TArray<FRotator> USGSenseGlovePose::GetThimbleRotations() const
{
Pimpl->SyncImplObject();
FSGIC_FSGSenseGlovePoseImpl InstanceContainer{ToSenseGlovePoseImpl()};
FSGIC_TArray_FQuat OutRotationsContainer;
SGCoreImpl_FSGSenseGlovePoseImpl_GetThimbleRotations(&InstanceContainer, &OutRotationsContainer);
@@ -400,8 +361,6 @@ TArray<FRotator> USGSenseGlovePose::GetThimbleRotations() const
TArray<FVector> USGSenseGlovePose::GetTotalGloveAngles() const
{
Pimpl->SyncImplObject();
FSGIC_FSGSenseGlovePoseImpl InstanceContainer{ToSenseGlovePoseImpl()};
FSGIC_TArray_FVector OutAnglesContainer;
SGCoreImpl_FSGSenseGlovePoseImpl_GetTotalGloveAngles(&InstanceContainer, &OutAnglesContainer);
@@ -410,8 +369,6 @@ TArray<FVector> USGSenseGlovePose::GetTotalGloveAngles() const
TArray<FVector> USGSenseGlovePose::CalculateFingerTips(const USGSenseGloveHandProfile* SenseGloveHandProfile) const
{
Pimpl->SyncImplObject();
FSGIC_FSGSenseGlovePoseImpl InstanceContainer{ToSenseGlovePoseImpl()};
FSGIC_TArray_FVector OutFingerTipsContainer;
FSGIC_FSGSenseGloveHandProfileImpl SenseGloveHandProfileImplContainer{
@@ -423,8 +380,6 @@ TArray<FVector> USGSenseGlovePose::CalculateFingerTips(const USGSenseGloveHandPr
TArray<FVector> USGSenseGlovePose::CalculateFingerTips(const TArray<FVector>& FingerOffsets) const
{
Pimpl->SyncImplObject();
FSGIC_FSGSenseGlovePoseImpl InstanceContainer{ToSenseGlovePoseImpl()};
FSGIC_TArray_FVector OutFingerTipsContainer;
FSGIC_TArray_FVector FingerOffsetsContainer{FingerOffsets};
@@ -435,8 +390,6 @@ TArray<FVector> USGSenseGlovePose::CalculateFingerTips(const TArray<FVector>& Fi
bool USGSenseGlovePose::Equals(const USGSenseGlovePose* SenseGlovePose) const
{
Pimpl->SyncImplObject();
FSGIC_FSGSenseGlovePoseImpl InstanceContainer{ToSenseGlovePoseImpl()};
FSGIC_FSGSenseGlovePoseImpl SenseGlovePoseContainer{SenseGlovePose->ToSenseGlovePoseImpl()};
return SGCoreImpl_FSGSenseGlovePoseImpl_Equals(&InstanceContainer, &SenseGlovePoseContainer);
@@ -444,8 +397,6 @@ bool USGSenseGlovePose::Equals(const USGSenseGlovePose* SenseGlovePose) const
FString USGSenseGlovePose::ToString(const bool bShortFormat) const
{
Pimpl->SyncImplObject();
FSGIC_FSGSenseGlovePoseImpl InstanceContainer{ToSenseGlovePoseImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGSenseGlovePoseImpl_ToString(&InstanceContainer, &OutStringContainer, bShortFormat);
@@ -454,8 +405,6 @@ FString USGSenseGlovePose::ToString(const bool bShortFormat) const
FString USGSenseGlovePose::SGSerialize() const
{
Pimpl->SyncImplObject();
FSGIC_FSGSenseGlovePoseImpl InstanceContainer{ToSenseGlovePoseImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGSenseGlovePoseImpl_Serialize(&InstanceContainer, &OutStringContainer);
@@ -473,11 +422,3 @@ void USGSenseGlovePose::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGSenseGlovePose::FImpl::SyncUProperties()
{
}
void USGSenseGlovePose::FImpl::SyncImplObject()
{
}
@@ -46,6 +46,7 @@
#include "SGInterop/SGIC_FString.h"
#include "SGInterop/SGIC_TArray_float.h"
#include "SGInterop/SGIC_TArray_TArray_float.h"
#include "SGUtils/SGArrayUtils.h"
struct USGSenseGloveSensorData::FImpl
{
@@ -74,13 +75,6 @@ struct USGSenseGloveSensorData::FImpl
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGSenseGloveSensorData* USGSenseGloveSensorData::NewSenseGloveSensorData(
@@ -186,28 +180,17 @@ USGSenseGloveSensorData* USGSenseGloveSensorData::Deserialize(UObject* Outer, co
}
USGSenseGloveSensorData::USGSenseGloveSensorData()
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGSenseGloveSensorDataImpl OutSenseGloveSensorDataImplContainer;
SGCoreImpl_FSGSenseGloveSensorDataImpl_ctor(&OutSenseGloveSensorDataImplContainer);
Pimpl->SenseGloveSensorDataImpl = MoveTemp(OutSenseGloveSensorDataImplContainer.SenseGloveSensorDataImpl);
Pimpl->SyncUProperties();
}
USGSenseGloveSensorData::USGSenseGloveSensorData(const TArray<TArray<float>>& SensorAngles, const FQuat& ImuRotation,
const int32 ParsedValues, const bool bImuParsed)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGSenseGloveSensorDataImpl OutSenseGloveSensorDataImplContainer;
FSGIC_TArray_TArray_float SensorAnglesContainer{SensorAngles};
@@ -216,17 +199,11 @@ USGSenseGloveSensorData::USGSenseGloveSensorData(const TArray<TArray<float>>& Se
&OutSenseGloveSensorDataImplContainer, &SensorAnglesContainer, &ImuRotationContainer, ParsedValues, bImuParsed);
Pimpl->SenseGloveSensorDataImpl = MoveTemp(OutSenseGloveSensorDataImplContainer.SenseGloveSensorDataImpl);
Pimpl->SyncUProperties();
}
USGSenseGloveSensorData::USGSenseGloveSensorData(const TArray<TArray<float>>& SensorAngles, const FRotator& ImuRotation,
const int32 ParsedValues, const bool bImuParsed)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGSenseGloveSensorDataImpl OutSenseGloveSensorDataImplContainer;
FSGIC_TArray_TArray_float SensorAnglesContainer{SensorAngles};
@@ -235,7 +212,6 @@ USGSenseGloveSensorData::USGSenseGloveSensorData(const TArray<TArray<float>>& Se
&OutSenseGloveSensorDataImplContainer, &SensorAnglesContainer, &ImuRotationContainer, ParsedValues, bImuParsed);
Pimpl->SenseGloveSensorDataImpl = MoveTemp(OutSenseGloveSensorDataImplContainer.SenseGloveSensorDataImpl);
Pimpl->SyncUProperties();
}
USGSenseGloveSensorData::USGSenseGloveSensorData(const TArray<FSGFloatArray>& SensorAngles, const FQuat& ImuRotation,
@@ -250,7 +226,6 @@ USGSenseGloveSensorData::USGSenseGloveSensorData(const TArray<FSGFloatArray>& Se
&OutSenseGloveSensorDataImplContainer, &SensorAnglesContainer, &ImuRotationContainer, ParsedValues, bImuParsed);
Pimpl->SenseGloveSensorDataImpl = MoveTemp(OutSenseGloveSensorDataImplContainer.SenseGloveSensorDataImpl);
Pimpl->SyncUProperties();
}
USGSenseGloveSensorData::USGSenseGloveSensorData(const TArray<FSGFloatArray>& SensorAngles, const FRotator& ImuRotation,
@@ -265,19 +240,12 @@ USGSenseGloveSensorData::USGSenseGloveSensorData(const TArray<FSGFloatArray>& Se
&OutSenseGloveSensorDataImplContainer, &SensorAnglesContainer, &ImuRotationContainer, ParsedValues, bImuParsed);
Pimpl->SenseGloveSensorDataImpl = MoveTemp(OutSenseGloveSensorDataImplContainer.SenseGloveSensorDataImpl);
Pimpl->SyncUProperties();
}
USGSenseGloveSensorData::USGSenseGloveSensorData(const FSGSenseGloveSensorDataImpl& SenseGloveSensorDataImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
SetSenseGloveSensorDataImpl(SenseGloveSensorDataImpl);
Pimpl->SyncUProperties();
}
USGSenseGloveSensorData::~USGSenseGloveSensorData() = default;
@@ -292,7 +260,6 @@ void USGSenseGloveSensorData::SetSenseGloveSensorDataImpl(const FSGSenseGloveSen
const FSGSenseGloveSensorDataImpl& USGSenseGloveSensorData::ToSenseGloveSensorDataImpl() const
{
Pimpl->SyncImplObject();
return Pimpl->SenseGloveSensorDataImpl;
}
@@ -334,8 +301,6 @@ bool USGSenseGloveSensorData::IsImuParsed() const
TArray<float> USGSenseGloveSensorData::GetSensorAngles(const ESGFinger Finger) const
{
Pimpl->SyncImplObject();
FSGIC_FSGSenseGloveSensorDataImpl InstanceContainer{ToSenseGloveSensorDataImpl()};
FSGIC_TArray_float OutAnglesContainer;
FSGIC_ESGFinger FingerContainer{Finger};
@@ -354,8 +319,6 @@ TArray<float> USGSenseGloveSensorData::GetAngleSequence() const
bool USGSenseGloveSensorData::Equals(const USGSenseGloveSensorData* SenseGloveSensorData) const
{
Pimpl->SyncImplObject();
FSGIC_FSGSenseGloveSensorDataImpl InstanceContainer{ToSenseGloveSensorDataImpl()};
FSGIC_FSGSenseGloveSensorDataImpl SenseGloveSensorDataContainer{SenseGloveSensorData->ToSenseGloveSensorDataImpl()};
return SGCoreImpl_FSGSenseGloveSensorDataImpl_Equals(&InstanceContainer, &SenseGloveSensorDataContainer);
@@ -363,8 +326,6 @@ bool USGSenseGloveSensorData::Equals(const USGSenseGloveSensorData* SenseGloveSe
FString USGSenseGloveSensorData::ToString() const
{
Pimpl->SyncImplObject();
FSGIC_FSGSenseGloveSensorDataImpl InstanceContainer{ToSenseGloveSensorDataImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGSenseGloveSensorDataImpl_ToString(&InstanceContainer, &OutStringContainer);
@@ -373,8 +334,6 @@ FString USGSenseGloveSensorData::ToString() const
FString USGSenseGloveSensorData::SGSerialize() const
{
Pimpl->SyncImplObject();
FSGIC_FSGSenseGloveSensorDataImpl InstanceContainer{ToSenseGloveSensorDataImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGSenseGloveSensorDataImpl_Serialize(&InstanceContainer, &OutStringContainer);
@@ -392,11 +351,3 @@ void USGSenseGloveSensorData::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGSenseGloveSensorData::FImpl::SyncUProperties()
{
}
void USGSenseGloveSensorData::FImpl::SyncImplObject()
{
}
@@ -70,13 +70,6 @@ struct USGSensorRange::FImpl
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGSensorRange* USGSensorRange::NewSensorRange(UObject* Outer, const FSGSensorRangeImpl& SensorRangeImpl)
@@ -140,27 +133,16 @@ void USGSensorRange::CheckMin(const FVector& CurrentValues, FVector& OutMinValue
}
USGSensorRange::USGSensorRange()
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGSensorRangeImpl OutSensorRangeImplContainer;
SGCoreImpl_FSGSensorRangeImpl_ctor(&OutSensorRangeImplContainer);
Pimpl->SensorRangeImpl = MoveTemp(OutSensorRangeImplContainer.SensorRangeImpl);
Pimpl->SyncUProperties();
}
USGSensorRange::USGSensorRange(const TArray<FVector>& MinValues, const TArray<FVector>& MaxValues)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGSensorRangeImpl OutSensorRangeImplContainer;
FSGIC_TArray_FVector MinValuesContainer{MinValues};
@@ -169,19 +151,12 @@ USGSensorRange::USGSensorRange(const TArray<FVector>& MinValues, const TArray<FV
&OutSensorRangeImplContainer, &MinValuesContainer, &MaxValuesContainer);
Pimpl->SensorRangeImpl = MoveTemp(OutSensorRangeImplContainer.SensorRangeImpl);
Pimpl->SyncUProperties();
}
USGSensorRange::USGSensorRange(const FSGSensorRangeImpl& SensorRangeImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
SetSensorRangeImpl(SensorRangeImpl);
Pimpl->SyncUProperties();
}
USGSensorRange::~USGSensorRange() = default;
@@ -196,7 +171,6 @@ void USGSensorRange::SetSensorRangeImpl(const FSGSensorRangeImpl& SensorRangeImp
const FSGSensorRangeImpl& USGSensorRange::ToSensorRangeImpl() const
{
Pimpl->SyncImplObject();
return Pimpl->SensorRangeImpl;
}
@@ -240,29 +214,19 @@ TArray<FVector> USGSensorRange::GetRange() const
void USGSensorRange::UpdateRange()
{
Pimpl->SyncImplObject();
FSGIC_FSGSensorRangeImpl InstanceContainer{ToSensorRangeImpl()};
SGCoreImpl_FSGSensorRangeImpl_UpdateRange(&InstanceContainer);
Pimpl->SyncUProperties();
}
void USGSensorRange::CheckForExtremes(const TArray<FVector>& OtherValues)
{
Pimpl->SyncImplObject();
FSGIC_FSGSensorRangeImpl InstanceContainer{ToSensorRangeImpl()};
FSGIC_TArray_FVector OtherValuesContainer{OtherValues};
SGCoreImpl_FSGSensorRangeImpl_CheckForExtremes(&InstanceContainer, &OtherValuesContainer);
Pimpl->SyncUProperties();
}
FString USGSensorRange::RangeString(const bool bYOnly) const
{
Pimpl->SyncImplObject();
FSGIC_FSGSensorRangeImpl InstanceContainer{ToSensorRangeImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGSensorRangeImpl_RangeString(&InstanceContainer, &OutStringContainer, bYOnly);
@@ -271,8 +235,6 @@ FString USGSensorRange::RangeString(const bool bYOnly) const
FString USGSensorRange::ToString(const bool bYOnly) const
{
Pimpl->SyncImplObject();
FSGIC_FSGSensorRangeImpl InstanceContainer{ToSensorRangeImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGSensorRangeImpl_ToString(&InstanceContainer, &OutStringContainer, bYOnly);
@@ -281,8 +243,6 @@ FString USGSensorRange::ToString(const bool bYOnly) const
FString USGSensorRange::SGSerialize() const
{
Pimpl->SyncImplObject();
FSGIC_FSGSensorRangeImpl InstanceContainer{ToSensorRangeImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGSensorRangeImpl_Serialize(&InstanceContainer, &OutStringContainer);
@@ -300,11 +260,3 @@ void USGSensorRange::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGSensorRange::FImpl::SyncUProperties()
{
}
void USGSensorRange::FImpl::SyncImplObject()
{
}
@@ -65,13 +65,6 @@ struct USGThumperCommand::FImpl
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGThumperCommand* USGThumperCommand::NewThumperCommand(UObject* Outer, const FSGThumperCommandImpl& ThumperCommandImpl)
@@ -106,45 +99,27 @@ USGThumperCommand* USGThumperCommand::Off(UObject* Outer)
}
USGThumperCommand::USGThumperCommand()
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGThumperCommandImpl OutThumperCommandImplContainer;
SGCoreImpl_FSGThumperCommandImpl_ctor(&OutThumperCommandImplContainer);
Pimpl->ThumperCommandImpl = MoveTemp(OutThumperCommandImplContainer.ThumperCommandImpl);
Pimpl->SyncUProperties();
}
USGThumperCommand::USGThumperCommand(const int32 Magnitude)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGThumperCommandImpl OutThumperCommandImplContainer;
SGCoreImpl_FSGThumperCommandImpl_ctor_Magnitude(&OutThumperCommandImplContainer, Magnitude);
Pimpl->ThumperCommandImpl = MoveTemp(OutThumperCommandImplContainer.ThumperCommandImpl);
Pimpl->SyncUProperties();
}
USGThumperCommand::USGThumperCommand(const FSGThumperCommandImpl& ThumperCommandImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
SetThumperCommandImpl(ThumperCommandImpl);
Pimpl->SyncUProperties();
}
USGThumperCommand::~USGThumperCommand() = default;
@@ -164,26 +139,18 @@ const FSGThumperCommandImpl& USGThumperCommand::ToThumperCommandImpl() const
int32 USGThumperCommand::GetMagnitude() const
{
Pimpl->SyncImplObject();
FSGIC_FSGThumperCommandImpl ThumperCommandImplContainer{ToThumperCommandImpl()};
return SGCoreImpl_FSGThumperCommandImpl_GetMagnitude(&ThumperCommandImplContainer);
}
void USGThumperCommand::SetMagnitude(const int32 Magnitude)
{
Pimpl->SyncImplObject();
FSGIC_FSGThumperCommandImpl ThumperCommandImplContainer{ToThumperCommandImpl()};
SGCoreImpl_FSGThumperCommandImpl_SetMagnitude(&ThumperCommandImplContainer, Magnitude);
Pimpl->SyncUProperties();
}
USGThumperCommand* USGThumperCommand::Copy(UObject* Outer) const
{
Pimpl->SyncImplObject();
FSGIC_FSGThumperCommandImpl InstanceContainer{ToThumperCommandImpl()};
FSGIC_FSGThumperCommandImpl OutThumperCommandImplContainer;
SGCoreImpl_FSGThumperCommandImpl_Copy(&InstanceContainer, &OutThumperCommandImplContainer);
@@ -192,8 +159,6 @@ USGThumperCommand* USGThumperCommand::Copy(UObject* Outer) const
USGThumperCommand* USGThumperCommand::Merge(UObject* Outer, const USGThumperCommand* ThumperCommand) const
{
Pimpl->SyncImplObject();
FSGIC_FSGThumperCommandImpl InstanceContainer{ToThumperCommandImpl()};
FSGIC_FSGThumperCommandImpl ThumperCommandImplContainer{ThumperCommand->ToThumperCommandImpl()};
FSGIC_FSGThumperCommandImpl OutThumperCommandImplContainer;
@@ -204,8 +169,6 @@ USGThumperCommand* USGThumperCommand::Merge(UObject* Outer, const USGThumperComm
bool USGThumperCommand::Equals(const USGThumperCommand* ThumperCommand) const
{
Pimpl->SyncImplObject();
FSGIC_FSGThumperCommandImpl InstanceContainer{ToThumperCommandImpl()};
FSGIC_FSGThumperCommandImpl ThumperCommandImplContainer{ThumperCommand->ToThumperCommandImpl()};
return SGCoreImpl_FSGThumperCommandImpl_Equals(&InstanceContainer, &ThumperCommandImplContainer);
@@ -222,11 +185,3 @@ void USGThumperCommand::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGThumperCommand::FImpl::SyncImplObject()
{
}
void USGThumperCommand::FImpl::SyncUProperties()
{
}
@@ -47,42 +47,6 @@
#include "SGInterop/SGIC_FString.h"
#include "SGInterop/SGIC_TSharedPtr_FSGTimedBuzzCommandImpl.h"
struct USGTimedBuzzCommand::FImpl
{
/************************
* Member variables
************************/
/************************
* Owner object
************************/
USGTimedBuzzCommand* Owner;
/************************
* Constructor / Destructor
************************/
explicit FImpl(USGTimedBuzzCommand* InOwner);
~FImpl();
/************************
* Default copy constructor & copy assignment operator
************************/
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGTimedBuzzCommand* USGTimedBuzzCommand::NewTimedBuzzCommand(
UObject* Outer, const FSGTimedBuzzCommandImpl& TimedBuzzCommandImpl)
{
@@ -132,28 +96,17 @@ USGTimedBuzzCommand* USGTimedBuzzCommand::NewTimedBuzzCommand(
}
USGTimedBuzzCommand::USGTimedBuzzCommand()
: USGBuzzCommand(),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGBuzzCommand()
{
FSGIC_TSharedPtr_FSGTimedBuzzCommandImpl OutTimedBuzzCommandImplContainer;
SGCoreImpl_FSGTimedBuzzCommandImpl_ctor_MakeShared(&OutTimedBuzzCommandImplContainer);
SetFingerCommandImpl(OutTimedBuzzCommandImplContainer.Ptr.ToSharedRef());
Pimpl->SyncUProperties();
}
USGTimedBuzzCommand::USGTimedBuzzCommand(const ESGFinger Finger, const int32 Magnitude,
const float DurationSeconds, const float StartTimeSeconds)
: USGBuzzCommand(),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGBuzzCommand()
{
FSGIC_TSharedPtr_FSGTimedBuzzCommandImpl OutSharedPtrContainer;
FSGIC_ESGFinger FingerContainer{Finger};
@@ -161,17 +114,11 @@ USGTimedBuzzCommand::USGTimedBuzzCommand(const ESGFinger Finger, const int32 Mag
&OutSharedPtrContainer, &FingerContainer, Magnitude, DurationSeconds, StartTimeSeconds);
SetFingerCommandImpl(OutSharedPtrContainer.Ptr.ToSharedRef());
Pimpl->SyncUProperties();
}
USGTimedBuzzCommand::USGTimedBuzzCommand(const USGBuzzCommand* BaseCommand,
const float DurationSeconds, const float StartTimeSeconds)
: USGBuzzCommand(),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGBuzzCommand()
{
FSGIC_TSharedPtr_FSGTimedBuzzCommandImpl OutSharedPtrContainer;
FSGIC_FSGBuzzCommandImpl BaseCommandContainer{BaseCommand->ToBuzzCommandImpl().Get()};
@@ -179,55 +126,27 @@ USGTimedBuzzCommand::USGTimedBuzzCommand(const USGBuzzCommand* BaseCommand,
&OutSharedPtrContainer, &BaseCommandContainer, DurationSeconds, StartTimeSeconds);
SetFingerCommandImpl(OutSharedPtrContainer.Ptr.ToSharedRef());
Pimpl->SyncUProperties();
}
USGTimedBuzzCommand::USGTimedBuzzCommand(const FSGTimedBuzzCommandImpl& TimedBuzzCommandImpl)
: USGBuzzCommand(TimedBuzzCommandImpl),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGBuzzCommand(TimedBuzzCommandImpl)
{
Pimpl->SyncUProperties();
}
USGTimedBuzzCommand::USGTimedBuzzCommand(TSharedRef<FSGTimedBuzzCommandImpl> TimedBuzzCommandImpl)
: USGBuzzCommand(MoveTemp(TimedBuzzCommandImpl)),
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: USGBuzzCommand(MoveTemp(TimedBuzzCommandImpl))
{
Pimpl->SyncUProperties();
}
USGTimedBuzzCommand::~USGTimedBuzzCommand() = default;
TSharedRef<FSGTimedBuzzCommandImpl> USGTimedBuzzCommand::ToTimedBuzzCommandImpl() const
{
SyncImplObject();
return FSGFingerCommandImplCast::ToTimedBuzzCommandImpl(ToFingerCommandImpl());
}
void USGTimedBuzzCommand::SyncImplObject() const
{
Super::SyncImplObject();
Pimpl->SyncImplObject();
}
void USGTimedBuzzCommand::SyncUProperties()
{
Super::SyncUProperties();
Pimpl->SyncUProperties();
}
USGBuzzCommand* USGTimedBuzzCommand::Copy(UObject* Outer) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGTimedBuzzCommandImpl InstanceContainer{ToTimedBuzzCommandImpl()};
FSGIC_FSGBuzzCommandImpl OutBuzzCommandImplContainer;
SGCoreImpl_FSGTimedBuzzCommandImpl_Copy(&InstanceContainer, &OutBuzzCommandImplContainer);
@@ -237,8 +156,6 @@ USGBuzzCommand* USGTimedBuzzCommand::Copy(UObject* Outer) const
USGBuzzCommand* USGTimedBuzzCommand::Merge(UObject* Outer, const USGBuzzCommand* BuzzCommand) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGTimedBuzzCommandImpl InstanceContainer{ToTimedBuzzCommandImpl()};
FSGIC_FSGBuzzCommandImpl BuzzCommandImplContainer{BuzzCommand->ToBuzzCommandImpl().Get()};
FSGIC_FSGBuzzCommandImpl OutBuzzCommandImplContainer;
@@ -256,12 +173,6 @@ USGBuzzCommand* USGTimedBuzzCommand::GetBaseCommand(UObject* Outer) const
return NewBuzzCommand(Outer, MoveTemp(OutCommandContainer.BuzzCommandImpl));
}
int32 USGTimedBuzzCommand::GetMagnitude() const
{
FSGIC_TSharedPtr_FSGTimedBuzzCommandImpl InstanceContainer{ToTimedBuzzCommandImpl()};
return SGCoreImpl_FSGTimedBuzzCommandImpl_GetMagnitude(&InstanceContainer);
}
float USGTimedBuzzCommand::GetDuration() const
{
FSGIC_TSharedPtr_FSGTimedBuzzCommandImpl InstanceContainer{ToTimedBuzzCommandImpl()};
@@ -276,66 +187,32 @@ float USGTimedBuzzCommand::GetElapsedTime() const
bool USGTimedBuzzCommand::HasTimeElapsed() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGTimedBuzzCommandImpl InstanceContainer{ToTimedBuzzCommandImpl()};
return SGCoreImpl_FSGTimedBuzzCommandImpl_HasTimeElapsed(&InstanceContainer);
}
float USGTimedBuzzCommand::NormalizedTime(const bool bClamp01) const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGTimedBuzzCommandImpl InstanceContainer{ToTimedBuzzCommandImpl()};
return SGCoreImpl_FSGTimedBuzzCommandImpl_NormalizedTime(&InstanceContainer, bClamp01);
}
void USGTimedBuzzCommand::ResetTiming()
{
SyncImplObject();
FSGIC_TSharedPtr_FSGTimedBuzzCommandImpl InstanceContainer{ToTimedBuzzCommandImpl()};
SGCoreImpl_FSGTimedBuzzCommandImpl_ResetTiming(&InstanceContainer);
SyncUProperties();
}
void USGTimedBuzzCommand::UpdateTiming(const float DeltaSeconds)
{
SyncImplObject();
FSGIC_TSharedPtr_FSGTimedBuzzCommandImpl InstanceContainer{ToTimedBuzzCommandImpl()};
SGCoreImpl_FSGTimedBuzzCommandImpl_UpdateTiming(&InstanceContainer, DeltaSeconds);
SyncUProperties();
}
FString USGTimedBuzzCommand::ToString() const
{
SyncImplObject();
FSGIC_TSharedPtr_FSGTimedBuzzCommandImpl InstanceContainer{ToTimedBuzzCommandImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGTimedBuzzCommandImpl_ToString(&InstanceContainer, &OutStringContainer);
return MoveTemp(OutStringContainer.String);
}
USGTimedBuzzCommand::FImpl::FImpl(USGTimedBuzzCommand* InOwner)
: Owner(InOwner)
{
}
USGTimedBuzzCommand::FImpl::~FImpl() = default;
void USGTimedBuzzCommand::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGTimedBuzzCommand::FImpl::SyncUProperties()
{
}
void USGTimedBuzzCommand::FImpl::SyncImplObject()
{
}
@@ -70,13 +70,6 @@ struct USGTimedThumpCommand::FImpl
FImpl(const FImpl& Rhs) = default;
FImpl& operator=(const FImpl& Rhs) = default;
/************************
* Methods
************************/
void SyncUProperties();
void SyncImplObject();
};
USGTimedThumpCommand* USGTimedThumpCommand::NewTimedThumpCommand(
@@ -117,45 +110,28 @@ USGTimedThumpCommand* USGTimedThumpCommand::NewTimedThumpCommand(
}
USGTimedThumpCommand::USGTimedThumpCommand()
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGTimedThumpCommandImpl OutTimedThumpCommandImplContainer;
SGCoreImpl_FSGTimedThumpCommandImpl_ctor(&OutTimedThumpCommandImplContainer);
Pimpl->TimedThumpCommandImpl = MoveTemp(OutTimedThumpCommandImplContainer.TimedThumpCommandImpl);
Pimpl->SyncUProperties();
}
USGTimedThumpCommand::USGTimedThumpCommand(const int32 Magnitude,
const float DurationSeconds, const float StartTimeSeconds)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGTimedThumpCommandImpl OutTimedThumpCommandImplContainer;
SGCoreImpl_FSGTimedThumpCommandImpl_ctor_Magnitude_DurationSeconds_StartTimeSeconds(
&OutTimedThumpCommandImplContainer, Magnitude, DurationSeconds, StartTimeSeconds);
Pimpl->TimedThumpCommandImpl = MoveTemp(OutTimedThumpCommandImplContainer.TimedThumpCommandImpl);
Pimpl->SyncUProperties();
}
USGTimedThumpCommand::USGTimedThumpCommand(const USGThumperCommand* BaseCommand,
const float DurationSeconds, const float StartTimeSeconds)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
FSGIC_FSGTimedThumpCommandImpl OutTimedThumpCommandImplContainer;
FSGIC_FSGThumperCommandImpl BaseCommandContainer{BaseCommand->ToThumperCommandImpl()};
@@ -163,19 +139,12 @@ USGTimedThumpCommand::USGTimedThumpCommand(const USGThumperCommand* BaseCommand,
&OutTimedThumpCommandImplContainer, &BaseCommandContainer, DurationSeconds, StartTimeSeconds);
Pimpl->TimedThumpCommandImpl = MoveTemp(OutTimedThumpCommandImplContainer.TimedThumpCommandImpl);
Pimpl->SyncUProperties();
}
USGTimedThumpCommand::USGTimedThumpCommand(const FSGTimedThumpCommandImpl& TimedThumpCommandImpl)
:
#if ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 )
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* ENGINE_MAJOR_VERSION == 5 || ( ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION > 24 ) */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
SetTimedThumpCommandImpl(TimedThumpCommandImpl);
Pimpl->SyncUProperties();
}
USGTimedThumpCommand::~USGTimedThumpCommand() = default;
@@ -190,7 +159,6 @@ void USGTimedThumpCommand::SetTimedThumpCommandImpl(const FSGTimedThumpCommandIm
const FSGTimedThumpCommandImpl& USGTimedThumpCommand::ToTimedThumpCommandImpl() const
{
Pimpl->SyncImplObject();
return Pimpl->TimedThumpCommandImpl;
}
@@ -200,48 +168,26 @@ int32 USGTimedThumpCommand::GetMagnitude() const
return SGCoreImpl_FSGTimedThumpCommandImpl_GetMagnitude(&InstanceContainer);
}
void USGTimedThumpCommand::SetMagnitude(int32 Magnitude)
{
FSGIC_FSGTimedThumpCommandImpl InstanceContainer{ToTimedThumpCommandImpl()};
SGCoreImpl_FSGTimedThumpCommandImpl_SetMagnitude(&InstanceContainer, Magnitude);
}
float USGTimedThumpCommand::GetDuration() const
{
FSGIC_FSGTimedThumpCommandImpl InstanceContainer{ToTimedThumpCommandImpl()};
return SGCoreImpl_FSGTimedThumpCommandImpl_GetDuration(&InstanceContainer);
}
void USGTimedThumpCommand::SetDuration(const float Duration)
{
FSGIC_FSGTimedThumpCommandImpl InstanceContainer{ToTimedThumpCommandImpl()};
SGCoreImpl_FSGTimedThumpCommandImpl_SetDuration(&InstanceContainer, Duration);
}
float USGTimedThumpCommand::GetElapsedTime() const
{
FSGIC_FSGTimedThumpCommandImpl InstanceContainer{ToTimedThumpCommandImpl()};
return SGCoreImpl_FSGTimedThumpCommandImpl_GetElapsedTime(&InstanceContainer);
}
void USGTimedThumpCommand::SetElapsedTime(const float ElapsedTime)
{
FSGIC_FSGTimedThumpCommandImpl InstanceContainer{ToTimedThumpCommandImpl()};
SGCoreImpl_FSGTimedThumpCommandImpl_SetElapsedTime(&InstanceContainer, ElapsedTime);
}
bool USGTimedThumpCommand::HasTimeElapsed() const
{
Pimpl->SyncImplObject();
FSGIC_FSGTimedThumpCommandImpl InstanceContainer{ToTimedThumpCommandImpl()};
return SGCoreImpl_FSGTimedThumpCommandImpl_HasTimeElapsed(&InstanceContainer);
}
USGTimedThumpCommand* USGTimedThumpCommand::Copy(UObject* Outer, const bool bCopyElapsed) const
{
Pimpl->SyncImplObject();
FSGIC_FSGTimedThumpCommandImpl InstanceContainer{ToTimedThumpCommandImpl()};
FSGIC_FSGTimedThumpCommandImpl OutTimedThumpCommandImplContainer;
SGCoreImpl_FSGTimedThumpCommandImpl_Copy(&InstanceContainer, &OutTimedThumpCommandImplContainer, bCopyElapsed);
@@ -251,16 +197,12 @@ USGTimedThumpCommand* USGTimedThumpCommand::Copy(UObject* Outer, const bool bCop
void USGTimedThumpCommand::Update(const float DeltaSeconds)
{
Pimpl->SyncImplObject();
FSGIC_FSGTimedThumpCommandImpl InstanceContainer{ToTimedThumpCommandImpl()};
SGCoreImpl_FSGTimedThumpCommandImpl_Update(&InstanceContainer, DeltaSeconds);
}
bool USGTimedThumpCommand::Equals(const USGTimedThumpCommand* TimedThumpCommand) const
{
Pimpl->SyncImplObject();
FSGIC_FSGTimedThumpCommandImpl InstanceContainer{ToTimedThumpCommandImpl()};
FSGIC_FSGTimedThumpCommandImpl TimedThumpCommandImplContainer{TimedThumpCommand->ToTimedThumpCommandImpl()};
return SGCoreImpl_FSGTimedThumpCommandImpl_Equals(&InstanceContainer, &TimedThumpCommandImplContainer);
@@ -268,8 +210,6 @@ bool USGTimedThumpCommand::Equals(const USGTimedThumpCommand* TimedThumpCommand)
FString USGTimedThumpCommand::ToString() const
{
Pimpl->SyncImplObject();
FSGIC_FSGTimedThumpCommandImpl InstanceContainer{ToTimedThumpCommandImpl()};
FSGIC_FString OutStringContainer;
SGCoreImpl_FSGTimedThumpCommandImpl_ToString(&InstanceContainer, &OutStringContainer);
@@ -287,11 +227,3 @@ void USGTimedThumpCommand::FImplDeleter::operator()(const FImpl* P) const
{
delete P;
}
void USGTimedThumpCommand::FImpl::SyncImplObject()
{
}
void USGTimedThumpCommand::FImpl::SyncUProperties()
{
}
@@ -82,14 +82,14 @@ public:
static float GetThumbJointLimit(bool bRightHanded, int32 Joint, int32 Movement, bool bMax);
/**
* Convert a total finger flexion in radians into a 0..1 representation.
* Convert a total finger flexion in degrees into a 0..1 representation.
*/
static float NormalizeFingerFlexion(float FlexionInRadians);
static float NormalizeFingerFlexion(float FlexionInDegrees);
/**
* Convert a total thumb flexion in radians into a 0..1 representation.
* Convert a total thumb flexion in degrees into a 0..1 representation.
*/
static float NormalizeThumbFlexion(float FlexionInRadians);
static float NormalizeThumbFlexion(float FlexionInDegrees);
/**
* Get Hand Angles that would make a Default (Idle) Pose.
@@ -46,8 +46,8 @@
#include "UObject/Object.h"
#include "UObject/ObjectMacros.h"
#include "SGCore/SGFloatArray.h"
#include "SGTypes/SGCoreTypes.h"
#include "SGTypes/SGFloatArray.h"
#include "SGBasicHandModel.generated.h"
@@ -38,8 +38,6 @@
#pragma once
#include "Templates/UniquePtr.h"
#include "SGCore/SGDevice.h"
#include "SGTypes/SGCoreTypes.h"
@@ -81,17 +79,6 @@ public:
*/
static USGBetaDevice* Parse(UObject* Outer, const FString& String);
private:
struct FImpl;
struct FImplDeleter
{
void operator()(const FImpl* P) const;
};
TUniquePtr<FImpl, FImplDeleter> Pimpl;
FImplDeleter PimplDeleter;
public:
/**
* The basic class constructor.
@@ -128,17 +115,6 @@ protected:
*/
TSharedRef<FSGBetaDeviceImpl> ToBetaDeviceImpl() const;
protected:
/**
* Allows the child classes to synchronize the parent's underlying object at any time.
*/
virtual void SyncImplObject() const override;
/**
* Allows the child classes to synchronize the parent's uproperties at any time.
*/
virtual void SyncUProperties() override;
public:
/**
* Get the DeviceType enumerator of this SenseGlove, used in DeviceList enumeration.
@@ -37,7 +37,6 @@
#include "HAL/Platform.h"
#include "Templates/SharedPointer.h"
#include "Templates/UniquePtr.h"
#include "UObject/ObjectMacros.h"
#include "SGCore/SGFingerCommand.h"
@@ -88,17 +87,6 @@ public:
*/
static USGBuzzCommand* Off(UObject* Outer);
private:
struct FImpl;
struct FImplDeleter
{
void operator()(const FImpl* P) const;
};
TUniquePtr<FImpl, FImplDeleter> Pimpl;
FImplDeleter PimplDeleter;
public:
/**
* The basic constructor.
@@ -144,17 +132,6 @@ public:
*/
TSharedRef<FSGBuzzCommandImpl> ToBuzzCommandImpl() const;
protected:
/**
* Allows the child classes to synchronize the parent's underlying object at any time.
*/
virtual void SyncImplObject() const override;
/**
* Allows the child classes to synchronize the parent's uproperties at any time.
*/
virtual void SyncUProperties() override;
public:
/**
* Copy this Buzz Command into a new object.
@@ -202,17 +202,6 @@ public:
*/
TSharedRef<FSGDeviceImpl> ToSGDeviceImpl() const;
protected:
/**
* Allows the child classes to synchronize the parent's underlying object at any time.
*/
virtual void SyncImplObject() const;
/**
* Allows the child classes to synchronize the parent's uproperties at any time.
*/
virtual void SyncUProperties();
public:
/**
* Check which DeviceType this class belongs to.
@@ -174,17 +174,6 @@ public:
*/
TSharedRef<FSGFingerCommandImpl> ToFingerCommandImpl() const;
protected:
/**
* Allows the child classes to synchronize the parent's underlying object at any time.
*/
virtual void SyncImplObject() const;
/**
* Allows the child classes to synchronize the parent's uproperties at any time.
*/
virtual void SyncUProperties();
public:
/**
*
@@ -37,7 +37,6 @@
#include "HAL/Platform.h"
#include "Templates/SharedPointer.h"
#include "Templates/UniquePtr.h"
#include "UObject/ObjectMacros.h"
#include "SGCore/SGFingerCommand.h"
@@ -92,17 +91,6 @@ public:
*/
static USGForceFeedbackCommand* Off(UObject* Outer);
private:
struct FImpl;
struct FImplDeleter
{
void operator()(const FImpl* P) const;
};
TUniquePtr<FImpl, FImplDeleter> Pimpl;
FImplDeleter PimplDeleter;
public:
/**
* Empty constructor for internal initialization.
@@ -148,17 +136,6 @@ public:
*/
TSharedRef<FSGForceFeedbackCommandImpl> ToForceFeedbackCommandImpl() const;
protected:
/**
* Allows the child classes to synchronize the parent's underlying object at any time.
*/
virtual void SyncImplObject() const override;
/**
* Allows the child classes to synchronize the parent's uproperties at any time.
*/
virtual void SyncUProperties() override;
public:
/**
* Copy this ForceFeedback Command into a new object.
@@ -44,7 +44,7 @@
#include "UObject/Object.h"
#include "UObject/ObjectMacros.h"
#include "SGCore/SGInterpolationSetArray.h"
#include "SGCoreTypes/SGInterpolationSetArray.h"
#include "SGTypes/SGCoreTypes.h"
#include "SGHandInterpolator.generated.h"
@@ -236,16 +236,22 @@ public:
public:
/**
* Calculate any finger's movement rotation, using an input value.
*
* WARNING: This method is for internal use only. Avoid using it!
*/
float CalculateAngle(ESGFinger Finger, int32 Movement, float Value) const;
/**
* Calculate a finger movement's rotation, using an input value.
*
* WARNING: This method is for internal use only. Avoid using it!
*/
float CalculateAngle(ESGFinger Finger, ESGFingerMovement Movement, float Value) const;
/**
* Calculate a thumb movement's rotation, using an input value.
*
* WARNING: This method is for internal use only. Avoid using it!
*/
float CalculateAngle(ESGFinger Finger, ESGThumbMovement Movement, float Value) const;
@@ -44,10 +44,10 @@
#include "UObject/Object.h"
#include "UObject/ObjectMacros.h"
#include "SGCore/SGQuatArray.h"
#include "SGCore/SGRotatorArray.h"
#include "SGCore/SGVectorArray.h"
#include "SGTypes/SGCoreTypes.h"
#include "SGTypes/SGQuatArray.h"
#include "SGTypes/SGRotatorArray.h"
#include "SGTypes/SGVectorArray.h"
#include "SGHandPose.generated.h"
@@ -94,17 +94,6 @@ public:
*/
static bool GetGlove(UObject* Outer, bool bRightHanded, USGHapticGlove*& OutGlove);
private:
struct FImpl;
struct FImplDeleter
{
void operator()(const FImpl* P) const;
};
TUniquePtr<FImpl, FImplDeleter> Pimpl;
FImplDeleter PimplDeleter;
protected:
/**
* The basic constructor.
@@ -165,17 +154,6 @@ public:
*/
TSharedRef<FSGHapticGloveImpl> ToHapticGloveImpl() const;
protected:
/**
* Allows the child classes to synchronize the parent's underlying object at any time.
*/
virtual void SyncImplObject() const override;
/**
* Allows the child classes to synchronize the parent's uproperties at any time.
*/
virtual void SyncUProperties() override;
public:
/**
* Get the DeviceType enumerator of this device; used to check if its a SenseGlove/Nova/etc.
@@ -239,6 +217,10 @@ public:
*/
virtual bool GetHandPose(UObject* Outer, USGHandPose*& OutHandPose);
#if PLATFORM_ANDROID
virtual bool GetHandPose(UObject* Outer, float DeltaTime, USGHandPose*& OutHandPose);
#endif /* PLATFORM_ANDROID */
public:
/**
* Stops all Haptic effects if any are currently playing. Useful at the end of simulations or when resetting.
@@ -172,12 +172,6 @@ public:
*/
const FSGHapticGloveCalibrationCheckImpl& ToHapticGloveCalibrationCheckImpl() const;
public:
/**
*
*/
USGSensorRange* GetLastSensorRange(UObject* Outer) const;
public:
/**
*
@@ -180,17 +180,6 @@ public:
*/
TSharedRef<FSGHapticGloveCalibrationSequenceImpl> ToHapticGloveCalibrationSequenceImpl() const;
protected:
/**
* Allows the child classes to synchronize the parent's underlying object at any time.
*/
virtual void SyncImplObject() const;
/**
* Allows the child classes to synchronize the parent's uproperties at any time.
*/
virtual void SyncUProperties();
public:
/**
* Glove linked to this calibration sequence. Will attempt to grab data from this glove evey time Update() is called.
@@ -37,7 +37,6 @@
#include "Containers/Array.h"
#include "Containers/UnrealString.h"
#include "Templates/UniquePtr.h"
#include "SGCore/SGHapticGloveCalibrationSequence.h"
@@ -80,17 +79,6 @@ public:
*/
static float GetDefaultAutoEndTimeout();
private:
struct FImpl;
struct FImplDeleter
{
void operator()(const FImpl* P) const;
};
TUniquePtr<FImpl, FImplDeleter> Pimpl;
FImplDeleter PimplDeleter;
public:
/**
*
@@ -128,17 +116,6 @@ public:
*/
TSharedRef<FSGHapticGloveQuickCalibrationImpl> ToHapticGloveQuickCalibrationImpl() const;
protected:
/**
* Allows the child classes to synchronize the parent's underlying object at any time.
*/
virtual void SyncImplObject() const override;
/**
* Allows the child classes to synchronize the parent's uproperties at any time.
*/
virtual void SyncUProperties() override;
public:
/**
* Time, in seconds, after which this sequence stops gathering data. Based on the deltaSeconds variable passed in the Update() function.
@@ -177,17 +177,6 @@ public:
*/
static FString ToBytes(const USGBuzzCommand* BuzzCommand);
private:
struct FImpl;
struct FImplDeleter
{
void operator()(const FImpl* P) const;
};
TUniquePtr<FImpl, FImplDeleter> Pimpl;
FImplDeleter PimplDeleter;
protected:
USGNovaGlove();
@@ -237,17 +226,6 @@ public:
*/
TSharedRef<FSGNovaGloveImpl> ToNovaGloveImpl() const;
protected:
/**
* Allows the child classes to synchronize the parent's underlying object at any time.
*/
virtual void SyncImplObject() const override;
/**
* Allows the child classes to synchronize the parent's uproperties at any time.
*/
virtual void SyncUProperties() override;
public:
/**
* Return the DeviceType of this Nova.
@@ -190,17 +190,6 @@ public:
const FRotator& GloveWristRotationOffset,
FVector& OutWristPosition, FRotator& OutWristRotation);
private:
struct FImpl;
struct FImplDeleter
{
void operator()(const FImpl* P) const;
};
TUniquePtr<FImpl, FImplDeleter> Pimpl;
FImplDeleter PimplDeleter;
protected:
/**
*
@@ -256,17 +245,6 @@ public:
*/
TSharedRef<FSGSenseGloveImpl> ToSenseGloveImpl() const;
protected:
/**
* Allows the child classes to synchronize the parent's underlying object at any time.
*/
virtual void SyncImplObject() const override;
/**
* Allows the child classes to synchronize the parent's uproperties at any time.
*/
virtual void SyncUProperties() override;
public:
/**
* Retrieve this glove's hardware model, which contains its hardware data.
@@ -41,8 +41,8 @@
#include "UObject/Object.h"
#include "UObject/ObjectMacros.h"
#include "SGCore/SGVectorArray.h"
#include "SGTypes/SGCoreTypes.h"
#include "SGTypes/SGVectorArray.h"
#include "SGSenseGloveInfo.generated.h"
@@ -44,9 +44,9 @@
#include "UObject/Object.h"
#include "UObject/ObjectMacros.h"
#include "SGCore/SGQuatArray.h"
#include "SGCore/SGRotatorArray.h"
#include "SGCore/SGVectorArray.h"
#include "SGTypes/SGQuatArray.h"
#include "SGTypes/SGRotatorArray.h"
#include "SGTypes/SGVectorArray.h"
#include "SGSenseGlovePose.generated.h"
@@ -42,8 +42,8 @@
#include "UObject/Object.h"
#include "UObject/ObjectMacros.h"
#include "SGCore/SGFloatArray.h"
#include "SGCore/SGSenseGloveInfo.h"
#include "SGTypes/SGFloatArray.h"
#include "SGSenseGloveSensorData.generated.h"
@@ -178,7 +178,7 @@ public:
public:
/**
* Glove angles in radians, sorted by finger, from proximal to distal.
* Glove angles in degrees, sorted by finger, from proximal to distal.
*/
TArray<TArray<float>> GetSensorAngles() const;
@@ -37,7 +37,6 @@
#include "HAL/Platform.h"
#include "Templates/SharedPointer.h"
#include "Templates/UniquePtr.h"
#include "UObject/ObjectMacros.h"
#include "SGTimedBuzzCommand.generated.h"
@@ -82,17 +81,6 @@ public:
UObject* Outer,
const USGBuzzCommand* BaseCommand, float DurationSeconds, float StartTimeSeconds = 0.0f);
private:
struct FImpl;
struct FImplDeleter
{
void operator()(const FImpl* P) const;
};
TUniquePtr<FImpl, FImplDeleter> Pimpl;
FImplDeleter PimplDeleter;
public:
/**
* Empty constructor for inheritance.
@@ -133,17 +121,6 @@ public:
*/
TSharedRef<FSGTimedBuzzCommandImpl> ToTimedBuzzCommandImpl() const;
protected:
/**
* Allows the child classes to synchronize the parent's underlying object at any time.
*/
virtual void SyncImplObject() const override;
/**
* Allows the child classes to synchronize the parent's uproperties at any time.
*/
virtual void SyncUProperties() override;
public:
/**
* Copy this Buzz Command's values into a new object.
@@ -161,11 +138,6 @@ public:
*/
USGBuzzCommand* GetBaseCommand(UObject* Outer) const;
/**
*
*/
int32 GetMagnitude() const;
/**
* The total time [milliseconds] each buzz motor should be vibrating for.
*/
@@ -132,31 +132,16 @@ public:
*/
int32 GetMagnitude() const;
/**
*
*/
void SetMagnitude(int32 Magnitude);
/**
* Duration in seconds.
*/
float GetDuration() const;
/**
*
*/
void SetDuration(float Duration);
/**
* The elapsed time so far.
*/
float GetElapsedTime() const;
/**
*
*/
void SetElapsedTime(float ElapsedTime);
public:
/**
* Returns true if the timed command has elapsed.
@@ -62,5 +62,12 @@ public class SenseGloveCore : ModuleRules
"SenseGloveUtils",
}
);
PrivateIncludePathModuleNames.AddRange(
new string[]
{
"SenseGloveCoreTypes",
}
);
}
}
@@ -38,8 +38,8 @@
#include "SGBuildHacks/SGInclude_Core_Anatomy.h"
#include "SGBuildHacks/SGInclude_Core_Vect3D.h"
#include "SGCoreImpl/SGVect3DImpl.h"
#include "SGUtils/SGAngles.h"
#include "SGUtils/SGArrayUtils.h"
#include "SGUtils/SGCoordinates.h"
float FSGAnatomyImpl::GetTotalFingerFlexion()
{
@@ -64,25 +64,31 @@ float FSGAnatomyImpl::GetTotalThumbExtension()
float FSGAnatomyImpl::GetFingerJointLimit(
const bool bRightHanded, const int32 Joint, const int32 Movement, const bool bMax)
{
return FSGCoordinates::TransformToUnreal(
return FSGAngles::TransformToUnreal(
Movement, FAnatomyType::GetFingerJointLimit(bRightHanded, Joint, Movement, bMax));
}
float FSGAnatomyImpl::GetThumbJointLimit(
const bool bRightHanded, const int32 Joint, const int32 Movement, const bool bMax)
{
return FSGCoordinates::TransformToUnreal(
return FSGAngles::TransformToUnreal(
Movement, FAnatomyType::GetThumbJointLimit(bRightHanded, Joint, Movement, bMax));
}
float FSGAnatomyImpl::NormalizeFingerFlexion(const float FlexionInRadians)
float FSGAnatomyImpl::NormalizeFingerFlexion(const float FlexionInDegrees)
{
return FAnatomyType::NormalizeFingerFlexion(FlexionInRadians);
return FSGAngles::TransformToUnreal(
FAnatomyType::NormalizeFingerFlexion(
FSGAngles::TransformToSenseGlove(
FlexionInDegrees)));
}
float FSGAnatomyImpl::NormalizeThumbFlexion(const float FlexionInRadians)
float FSGAnatomyImpl::NormalizeThumbFlexion(const float FlexionInDegrees)
{
return FAnatomyType::NormalizeThumbFlexion(FlexionInRadians);
return FSGAngles::TransformToUnreal(
FAnatomyType::NormalizeThumbFlexion(
FSGAngles::TransformToSenseGlove(
FlexionInDegrees)));
}
TArray<TArray<FVector>> FSGAnatomyImpl::GetDefaultHandAngles(const bool bRightHanded)
@@ -118,23 +118,13 @@ const TArray<FVector>& FSGBasicHandModelImpl::GetBaseJointAngles()
}
FSGBasicHandModelImpl::FSGBasicHandModelImpl()
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
}
FSGBasicHandModelImpl::FSGBasicHandModelImpl(const bool bRightHanded, const TArray<TArray<float>>& Lengths,
const TArray<FVector>& StartPositions)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
std::vector<std::vector<float>> LengthsVector{
FSGArrayUtils::ToMillimeters(Lengths)
@@ -150,12 +140,7 @@ FSGBasicHandModelImpl::FSGBasicHandModelImpl(const bool bRightHanded, const TArr
FSGBasicHandModelImpl::FSGBasicHandModelImpl(const bool bRightHanded, const TArray<TArray<float>>& Lengths,
const TArray<FVector>& StartPositions, const TArray<FQuat>& StartRotations)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
std::vector<std::vector<float>> LengthsVector{
FSGArrayUtils::ToMillimeters(Lengths)
@@ -175,32 +160,18 @@ FSGBasicHandModelImpl::FSGBasicHandModelImpl(const bool bRightHanded, const TArr
}
FSGBasicHandModelImpl::FSGBasicHandModelImpl(const FBasicHandModelType& BasicHandModel)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->BasicHandModel = BasicHandModel;
}
FSGBasicHandModelImpl::FSGBasicHandModelImpl(const FSGBasicHandModelImpl& Rhs)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
{
Pimpl->Owner = this;
}
FSGBasicHandModelImpl::FSGBasicHandModelImpl(FSGBasicHandModelImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGBasicHandModelImpl::FSGBasicHandModelImpl(FSGBasicHandModelImpl&& Rhs) SG_NOEXCEPT = default;
FSGBasicHandModelImpl::~FSGBasicHandModelImpl() = default;
@@ -211,11 +182,7 @@ FSGBasicHandModelImpl& FSGBasicHandModelImpl::operator=(const FSGBasicHandModelI
return *this;
}
FSGBasicHandModelImpl& FSGBasicHandModelImpl::operator=(FSGBasicHandModelImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGBasicHandModelImpl& FSGBasicHandModelImpl::operator=(FSGBasicHandModelImpl&& Rhs) SG_NOEXCEPT = default;
const FSGBasicHandModelImpl::FBasicHandModelType& FSGBasicHandModelImpl::ToBasicHandModel() const
{
@@ -227,11 +194,6 @@ bool FSGBasicHandModelImpl::IsRight() const
return Pimpl->BasicHandModel.IsRight();
}
void FSGBasicHandModelImpl::SetIsRight(const bool bRightHanded)
{
Pimpl->BasicHandModel.SetIsRight(bRightHanded);
}
TArray<TArray<float>> FSGBasicHandModelImpl::GetFingerLengths() const
{
TArray<TArray<float>> FingerLengths{
@@ -240,14 +202,6 @@ TArray<TArray<float>> FSGBasicHandModelImpl::GetFingerLengths() const
return MoveTemp(FingerLengths);
}
void FSGBasicHandModelImpl::SetFingerLengths(const TArray<TArray<float>>& FingerLengths)
{
std::vector<std::vector<float>> FingerLengthsVector{
FSGArrayUtils::ToMillimeters(FingerLengths)
};
Pimpl->BasicHandModel.SetFingerLengths(MoveTemp(FingerLengthsVector));
}
TArray<float> FSGBasicHandModelImpl::GetFingerLengths(const ESGFinger Finger) const
{
TArray<float> FingerLengths{
@@ -297,14 +251,6 @@ TArray<FVector> FSGBasicHandModelImpl::GetStartJointPositions() const
return MoveTemp(StartJointPositions);
}
void FSGBasicHandModelImpl::SetStartJointPositions(const TArray<FVector>& StartJointPositions)
{
std::vector<FSGVect3DImpl::FVect3DType> StartJointPositionsVector{
FSGArrayUtils::ToMillimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(StartJointPositions)
};
Pimpl->BasicHandModel.SetStartJointPositions(MoveTemp(StartJointPositionsVector));
}
void FSGBasicHandModelImpl::SetStartJointPosition(const ESGFinger Finger, const FVector& Position)
{
Pimpl->BasicHandModel.SetStartJointPosition(
@@ -329,15 +275,6 @@ TArray<FQuat> FSGBasicHandModelImpl::GetStartJointRotations() const
return MoveTemp(StartJointRotations);
}
void FSGBasicHandModelImpl::SetStartJointRotations(const TArray<FQuat>& StartJointRotations)
{
std::vector<FSGQuatImpl::FQuatType> StartJointRotationsVector{
FSGArrayUtils::ToStdVector<
FQuat, FSGQuatImpl::FQuatType, FSGQuatImpl, &FSGQuatImpl::ToQuat>(StartJointRotations)
};
Pimpl->BasicHandModel.SetStartJointRotations(MoveTemp(StartJointRotationsVector));
}
FVector FSGBasicHandModelImpl::GetJointPosition(const ESGFinger Finger) const
{
return FSGUnits::MillimetersToCentimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(
@@ -77,11 +77,7 @@ TSharedRef<FSGBetaDeviceImpl> FSGBetaDeviceImpl::Parse(const FString& String)
FSGBetaDeviceImpl::FSGBetaDeviceImpl()
: FSGDeviceImpl(),
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
{
}
@@ -93,50 +89,30 @@ FSGBetaDeviceImpl::FSGBetaDeviceImpl(const FString& ConstantsString, const FStri
TCHAR_TO_UTF8(*HardwareVersion),
FirmwareVersion,
SubFirmwareVersion)),
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
{
}
FSGBetaDeviceImpl::FSGBetaDeviceImpl(const FBetaDeviceType BetaDevice)
: FSGDeviceImpl(std::make_shared<FBetaDeviceType>(BetaDevice)),
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
{
}
FSGBetaDeviceImpl::FSGBetaDeviceImpl(const FBetaDevicePtrType BetaDevice)
: FSGDeviceImpl(BetaDevice),
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
{
}
FSGBetaDeviceImpl::FSGBetaDeviceImpl(const FSGBetaDeviceImpl& Rhs)
: FSGDeviceImpl(Rhs),
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}))
#endif /* SG_CPP17 */
{
Pimpl->Owner = this;
}
FSGBetaDeviceImpl::FSGBetaDeviceImpl(FSGBetaDeviceImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGBetaDeviceImpl::FSGBetaDeviceImpl(FSGBetaDeviceImpl&& Rhs) SG_NOEXCEPT = default;
FSGBetaDeviceImpl::~FSGBetaDeviceImpl() = default;
@@ -148,11 +124,7 @@ FSGBetaDeviceImpl& FSGBetaDeviceImpl::operator=(const FSGBetaDeviceImpl& Rhs)
return *this;
}
FSGBetaDeviceImpl& FSGBetaDeviceImpl::operator=(FSGBetaDeviceImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGBetaDeviceImpl& FSGBetaDeviceImpl::operator=(FSGBetaDeviceImpl&& Rhs) SG_NOEXCEPT = default;
FSGBetaDeviceImpl::FBetaDeviceType FSGBetaDeviceImpl::ToBetaDevice() const
{
@@ -75,81 +75,49 @@ const FSGBuzzCommandImpl& FSGBuzzCommandImpl::Off()
FSGBuzzCommandImpl::FSGBuzzCommandImpl()
: FSGFingerCommandImpl(MakeShared<FBuzzCommandType>()),
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
}
FSGBuzzCommandImpl::FSGBuzzCommandImpl(const TArray<int32>& BuzzLevels)
: FSGFingerCommandImpl(MakeShared<FBuzzCommandType>(FSGArrayUtils::ToStdVector<int32>(BuzzLevels))),
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
}
FSGBuzzCommandImpl::FSGBuzzCommandImpl(const int32 Thumb, const int32 Index, const int32 Middle, const int32 Ring,
const int32 Pinky)
: FSGFingerCommandImpl(MakeShared<FBuzzCommandType>(Thumb, Index, Middle, Ring, Pinky)),
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
}
FSGBuzzCommandImpl::FSGBuzzCommandImpl(const ESGFinger Finger, const int32 BuzzLevel)
: FSGFingerCommandImpl(MakeShared<FBuzzCommandType>(FSGCoreEnumCast::ToEFinger(Finger), BuzzLevel)),
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
}
FSGBuzzCommandImpl::FSGBuzzCommandImpl(const FBuzzCommandType& BuzzCommand)
: FSGFingerCommandImpl(MakeShared<FBuzzCommandType>(BuzzCommand)),
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
}
FSGBuzzCommandImpl::FSGBuzzCommandImpl(const TSharedRef<FBuzzCommandType> BuzzCommand)
: FSGFingerCommandImpl(BuzzCommand),
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
}
FSGBuzzCommandImpl::FSGBuzzCommandImpl(const FSGBuzzCommandImpl& Rhs)
: FSGFingerCommandImpl(Rhs),
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}))
#endif /* SG_CPP17 */
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
{
Pimpl->Owner = this;
}
FSGBuzzCommandImpl::FSGBuzzCommandImpl(FSGBuzzCommandImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGBuzzCommandImpl::FSGBuzzCommandImpl(FSGBuzzCommandImpl&& Rhs) SG_NOEXCEPT = default;
FSGBuzzCommandImpl::~FSGBuzzCommandImpl() = default;
@@ -161,11 +129,7 @@ FSGBuzzCommandImpl& FSGBuzzCommandImpl::operator=(const FSGBuzzCommandImpl& Rhs)
return *this;
}
FSGBuzzCommandImpl& FSGBuzzCommandImpl::operator=(FSGBuzzCommandImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGBuzzCommandImpl& FSGBuzzCommandImpl::operator=(FSGBuzzCommandImpl&& Rhs) SG_NOEXCEPT = default;
const FSGBuzzCommandImpl::FBuzzCommandType& FSGBuzzCommandImpl::ToBuzzCommand() const
{
@@ -76,23 +76,13 @@ struct FSGCalibrationDataPointImpl::FImpl
};
FSGCalibrationDataPointImpl::FSGCalibrationDataPointImpl()
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
}
FSGCalibrationDataPointImpl::FSGCalibrationDataPointImpl(const int32 CurrentStage,
const TArray<FVector>& CalibrationValues)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
std::vector<FSGVect3DImpl::FVect3DType> Values(
FSGArrayUtils::ToStdVector<FVector, FSGVect3DImpl::FVect3DType, FSGVect3DImpl, &FSGVect3DImpl::ToVect3D>(
@@ -101,32 +91,18 @@ FSGCalibrationDataPointImpl::FSGCalibrationDataPointImpl(const int32 CurrentStag
}
FSGCalibrationDataPointImpl::FSGCalibrationDataPointImpl(const FCalibrationDataPointType& CalibrationDataPoint)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->CalibrationDataPoint = CalibrationDataPoint;
}
FSGCalibrationDataPointImpl::FSGCalibrationDataPointImpl(const FSGCalibrationDataPointImpl& Rhs)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
{
Pimpl->Owner = this;
}
FSGCalibrationDataPointImpl::FSGCalibrationDataPointImpl(FSGCalibrationDataPointImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGCalibrationDataPointImpl::FSGCalibrationDataPointImpl(FSGCalibrationDataPointImpl&& Rhs) SG_NOEXCEPT = default;
FSGCalibrationDataPointImpl::~FSGCalibrationDataPointImpl() = default;
@@ -137,10 +113,7 @@ FSGCalibrationDataPointImpl& FSGCalibrationDataPointImpl::operator=(const FSGCal
return *this;
}
FSGCalibrationDataPointImpl& FSGCalibrationDataPointImpl::operator=(FSGCalibrationDataPointImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
FSGCalibrationDataPointImpl& FSGCalibrationDataPointImpl::operator=(FSGCalibrationDataPointImpl&& Rhs) SG_NOEXCEPT
= default;
const FSGCalibrationDataPointImpl::FCalibrationDataPointType&
@@ -159,25 +132,11 @@ TArray<FVector> FSGCalibrationDataPointImpl::GetCalibrationValues() const
return CalibrationValues;
}
void FSGCalibrationDataPointImpl::SetCalibrationValues(const TArray<FVector>& CalibrationValues)
{
std::vector<FSGVect3DImpl::FVect3DType> CalibrationValuesVector{
FSGArrayUtils::ToStdVector<FVector, FSGVect3DImpl::FVect3DType, FSGVect3DImpl, &FSGVect3DImpl::ToVect3D>(
CalibrationValues)
};
Pimpl->CalibrationDataPoint.SetCalibrationValues(MoveTemp(CalibrationValuesVector));
}
int32 FSGCalibrationDataPointImpl::GetStage() const
{
return Pimpl->CalibrationDataPoint.GetStage();
}
void FSGCalibrationDataPointImpl::SetStage(const int32 Stage)
{
Pimpl->CalibrationDataPoint.SetStage(Stage);
}
FString FSGCalibrationDataPointImpl::ToLogData(const FString& Delimiter) const
{
std::string DelimiterString(TCHAR_TO_UTF8(*Delimiter));
@@ -89,43 +89,24 @@ FString FSGDeviceImpl::ToString(ESGDeviceType DeviceType)
}
FSGDeviceImpl::FSGDeviceImpl()
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
}
FSGDeviceImpl::FSGDeviceImpl(const FSGDevicePtrType SGDevice)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
ensureAlwaysMsgf(SGDevice.get(), TEXT("Invalid SGDevice!"));
Pimpl->SGDevice = SGDevice;
}
FSGDeviceImpl::FSGDeviceImpl(const FSGDeviceImpl& Rhs)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
{
Pimpl->Owner = this;
}
FSGDeviceImpl::FSGDeviceImpl(FSGDeviceImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGDeviceImpl::FSGDeviceImpl(FSGDeviceImpl&& Rhs) SG_NOEXCEPT = default;
FSGDeviceImpl::~FSGDeviceImpl() = default;
@@ -136,11 +117,7 @@ FSGDeviceImpl& FSGDeviceImpl::operator=(const FSGDeviceImpl& Rhs)
return *this;
}
FSGDeviceImpl& FSGDeviceImpl::operator=(FSGDeviceImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGDeviceImpl& FSGDeviceImpl::operator=(FSGDeviceImpl&& Rhs) SG_NOEXCEPT = default;
FSGDeviceImpl::FSGDevicePtrType FSGDeviceImpl::ToSGDevicePtr() const
{
@@ -96,23 +96,13 @@ void FSGDeviceModelImpl::ParseFirmware(const FString& RawFirmware, int32& OutMai
}
FSGDeviceModelImpl::FSGDeviceModelImpl()
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
}
FSGDeviceModelImpl::FSGDeviceModelImpl(
const FString& Id, const FString& HardwareVersion, const int32 FirmwareVersion, const int32 SubFirmwareVersion)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
std::string IdString(TCHAR_TO_UTF8(*Id));
std::string HardwareVersionString(TCHAR_TO_UTF8(*HardwareVersion));
@@ -121,32 +111,18 @@ FSGDeviceModelImpl::FSGDeviceModelImpl(
}
FSGDeviceModelImpl::FSGDeviceModelImpl(const FDeviceModelType& DeviceModel)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->DeviceModel = DeviceModel;
}
FSGDeviceModelImpl::FSGDeviceModelImpl(const FSGDeviceModelImpl& Rhs)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
{
Pimpl->Owner = this;
}
FSGDeviceModelImpl::FSGDeviceModelImpl(FSGDeviceModelImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGDeviceModelImpl::FSGDeviceModelImpl(FSGDeviceModelImpl&& Rhs) SG_NOEXCEPT = default;
FSGDeviceModelImpl::~FSGDeviceModelImpl() = default;
@@ -157,11 +133,7 @@ FSGDeviceModelImpl& FSGDeviceModelImpl::operator=(const FSGDeviceModelImpl& Rhs)
return *this;
}
FSGDeviceModelImpl& FSGDeviceModelImpl::operator=(FSGDeviceModelImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGDeviceModelImpl& FSGDeviceModelImpl::operator=(FSGDeviceModelImpl&& Rhs) SG_NOEXCEPT = default;
const FSGDeviceModelImpl::FDeviceModelType& FSGDeviceModelImpl::ToDeviceModel() const
{
@@ -174,42 +146,22 @@ FString FSGDeviceModelImpl::GetDeviceId() const
return MoveTemp(DeviceId);
}
void FSGDeviceModelImpl::SetDeviceId(const FString& Id) const
{
Pimpl->DeviceModel.SetDeviceId(TCHAR_TO_UTF8(*Id));
}
FString FSGDeviceModelImpl::GetHardwareVersion() const
{
FString HardwareVersion(UTF8_TO_TCHAR(Pimpl->DeviceModel.GetHardwareVersion().c_str()));
return MoveTemp(HardwareVersion);
}
void FSGDeviceModelImpl::SetHardwareVersion(const FString& Version) const
{
Pimpl->DeviceModel.SetHardwareVersion(TCHAR_TO_UTF8(*Version));
}
int32 FSGDeviceModelImpl::GetFirmwareVersion() const
{
return Pimpl->DeviceModel.GetFirmwareVersion();
}
void FSGDeviceModelImpl::SetFirmwareVersion(const int32 Version) const
{
Pimpl->DeviceModel.SetFirmwareVersion(Version);
}
int32 FSGDeviceModelImpl::GetSubFirmwareVersion() const
{
return Pimpl->DeviceModel.GetSubFirmwareVersion();
}
void FSGDeviceModelImpl::SetSubFirmwareVersion(const int32 Version) const
{
Pimpl->DeviceModel.SetSubFirmwareVersion(Version);
}
FSGDeviceModelImpl::FImpl::FImpl(FSGDeviceModelImpl* InOwner)
: Owner(InOwner)
{
File diff suppressed because it is too large Load Diff
@@ -83,22 +83,12 @@ struct FSGFingerCommandImpl::FImpl
};
FSGFingerCommandImpl::FSGFingerCommandImpl()
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
}
FSGFingerCommandImpl::FSGFingerCommandImpl(const TArray<int32>& Levels)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
std::vector<int32> LevelsVector{
FSGArrayUtils::ToStdVector<int32>(Levels)
@@ -107,44 +97,25 @@ FSGFingerCommandImpl::FSGFingerCommandImpl(const TArray<int32>& Levels)
}
FSGFingerCommandImpl::FSGFingerCommandImpl(const FFingerCommandType& FingerCommand)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->FingerCommand = MakeShared<FFingerCommandType>(FingerCommand);
}
FSGFingerCommandImpl::FSGFingerCommandImpl(const TSharedRef<FFingerCommandType> FingerCommand)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->FingerCommand = FImpl::MakeNewFingerCommand(FingerCommand);
}
FSGFingerCommandImpl::FSGFingerCommandImpl(const FSGFingerCommandImpl& Rhs)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
{
Pimpl->Owner = this;
Pimpl->FingerCommand = FImpl::MakeNewFingerCommand(Rhs.Pimpl->FingerCommand);
}
FSGFingerCommandImpl::FSGFingerCommandImpl(FSGFingerCommandImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGFingerCommandImpl::FSGFingerCommandImpl(FSGFingerCommandImpl&& Rhs) SG_NOEXCEPT = default;
FSGFingerCommandImpl::~FSGFingerCommandImpl() = default;
@@ -155,11 +126,7 @@ FSGFingerCommandImpl& FSGFingerCommandImpl::operator=(const FSGFingerCommandImpl
return *this;
}
FSGFingerCommandImpl& FSGFingerCommandImpl::operator=(FSGFingerCommandImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGFingerCommandImpl& FSGFingerCommandImpl::operator=(FSGFingerCommandImpl&& Rhs) SG_NOEXCEPT = default;
const FSGFingerCommandImpl::FFingerCommandType& FSGFingerCommandImpl::ToFingerCommand() const
{
@@ -213,12 +180,6 @@ TArray<int32> FSGFingerCommandImpl::GetLevels() const
return FSGArrayUtils::FromStdVector<int32>(Pimpl->FingerCommand->GetLevels());
}
void FSGFingerCommandImpl::SetLevels(const TArray<int32>& Levels)
{
std::vector<int32> LevelsVector{FSGArrayUtils::ToStdVector<int32>(Levels)};
Pimpl->FingerCommand->SetLevels(MoveTemp(LevelsVector));
}
int32 FSGFingerCommandImpl::GetLevel(const int32 Finger) const
{
return Pimpl->FingerCommand->GetLevel(Finger);
@@ -75,82 +75,51 @@ const FSGForceFeedbackCommandImpl& FSGForceFeedbackCommandImpl::Off()
FSGForceFeedbackCommandImpl::FSGForceFeedbackCommandImpl()
: FSGFingerCommandImpl(MakeShared<FForceFeedbackCommandType>()),
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
}
FSGForceFeedbackCommandImpl::FSGForceFeedbackCommandImpl(const TArray<int32>& ForceFeedbackLevels)
: FSGFingerCommandImpl(MakeShared<FForceFeedbackCommandType>(
FSGArrayUtils::ToStdVector<int32>(ForceFeedbackLevels))),
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
FSGArrayUtils::ToStdVector<int32>(ForceFeedbackLevels))),
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
}
FSGForceFeedbackCommandImpl::FSGForceFeedbackCommandImpl(const int32 Thumb, const int32 Index, const int32 Middle,
const int32 Ring, const int32 Pinky)
: FSGFingerCommandImpl(MakeShared<FForceFeedbackCommandType>(Thumb, Index, Middle, Ring, Pinky)),
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
}
FSGForceFeedbackCommandImpl::FSGForceFeedbackCommandImpl(const ESGFinger Finger, const int32 BuzzLevel)
: FSGFingerCommandImpl(MakeShared<FForceFeedbackCommandType>(FSGCoreEnumCast::ToEFinger(Finger), BuzzLevel)),
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
}
FSGForceFeedbackCommandImpl::FSGForceFeedbackCommandImpl(const FForceFeedbackCommandType& ForceFeedbackCommand)
: FSGFingerCommandImpl(MakeShared<FForceFeedbackCommandType>(ForceFeedbackCommand)),
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
}
FSGForceFeedbackCommandImpl::FSGForceFeedbackCommandImpl(const TSharedRef<FForceFeedbackCommandType> ForceFeedbackCommand)
FSGForceFeedbackCommandImpl::FSGForceFeedbackCommandImpl(
const TSharedRef<FForceFeedbackCommandType> ForceFeedbackCommand)
: FSGFingerCommandImpl(ForceFeedbackCommand),
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
}
FSGForceFeedbackCommandImpl::FSGForceFeedbackCommandImpl(const FSGForceFeedbackCommandImpl& Rhs)
: FSGFingerCommandImpl(Rhs),
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}))
#endif /* SG_CPP17 */
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
{
Pimpl->Owner = this;
}
FSGForceFeedbackCommandImpl::FSGForceFeedbackCommandImpl(FSGForceFeedbackCommandImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGForceFeedbackCommandImpl::FSGForceFeedbackCommandImpl(FSGForceFeedbackCommandImpl&& Rhs) SG_NOEXCEPT = default;
FSGForceFeedbackCommandImpl::~FSGForceFeedbackCommandImpl() = default;
@@ -162,18 +131,17 @@ FSGForceFeedbackCommandImpl& FSGForceFeedbackCommandImpl::operator=(const FSGFor
return *this;
}
FSGForceFeedbackCommandImpl& FSGForceFeedbackCommandImpl::operator=(FSGForceFeedbackCommandImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
FSGForceFeedbackCommandImpl& FSGForceFeedbackCommandImpl::operator=(FSGForceFeedbackCommandImpl&& Rhs) SG_NOEXCEPT
= default;
const FSGForceFeedbackCommandImpl::FForceFeedbackCommandType& FSGForceFeedbackCommandImpl::ToForceFeedbackCommand() const
const FSGForceFeedbackCommandImpl::FForceFeedbackCommandType&
FSGForceFeedbackCommandImpl::ToForceFeedbackCommand() const
{
return *StaticCastSharedRef<FForceFeedbackCommandType>(ToFingerCommandRef());
}
TSharedRef<FSGForceFeedbackCommandImpl::FForceFeedbackCommandType> FSGForceFeedbackCommandImpl::ToForceFeedbackCommandRef() const
TSharedRef<FSGForceFeedbackCommandImpl::FForceFeedbackCommandType>
FSGForceFeedbackCommandImpl::ToForceFeedbackCommandRef() const
{
return StaticCastSharedRef<FForceFeedbackCommandType>(ToFingerCommandRef());
}
@@ -48,8 +48,8 @@
#include "SGCoreImpl/SGInterpolationSetImpl.h"
#include "SGCoreImpl/SGQuatImpl.h"
#include "SGCoreImpl/SGVect3DImpl.h"
#include "SGUtils/SGAngles.h"
#include "SGUtils/SGArrayUtils.h"
#include "SGUtils/SGCoordinates.h"
struct FSGHandInterpolatorImpl::FImpl
{
@@ -100,7 +100,7 @@ TArray<FVector> FSGHandInterpolatorImpl::InterpolateFingerAngles(
FSGArrayUtils::FromSenseGloveAngles<FSGVect3DImpl::FVect3DType>(
FHandInterpolatorType::InterpolateFingerAngles(
FSGCoreEnumCast::ToEFinger(Finger), Interpolator.ToHandInterpolator(),
FSGCoordinates::TransformToSenseGlove<FSGVect3DImpl::FVect3DType>(TotalGloveAngles)))
FSGAngles::TransformToSenseGlove<FSGVect3DImpl::FVect3DType>(TotalGloveAngles)))
};
return MoveTemp(Angles);
}
@@ -112,7 +112,7 @@ TArray<FVector> FSGHandInterpolatorImpl::InterpolateThumbAngles(const FSGHandInt
FSGArrayUtils::FromSenseGloveAngles<FSGVect3DImpl::FVect3DType>(
FHandInterpolatorType::InterpolateThumbAngles(
Interpolator.ToHandInterpolator(),
FSGCoordinates::TransformToSenseGlove<FSGVect3DImpl::FVect3DType>(TotalGloveAngles)))
FSGAngles::TransformToSenseGlove<FSGVect3DImpl::FVect3DType>(TotalGloveAngles)))
};
return MoveTemp(Angles);
}
@@ -132,22 +132,12 @@ TArray<TArray<FVector>> FSGHandInterpolatorImpl::InterpolateHandAngles(const FSG
}
FSGHandInterpolatorImpl::FSGHandInterpolatorImpl()
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
}
FSGHandInterpolatorImpl::FSGHandInterpolatorImpl(const TArray<TArray<FSGInterpolationSetImpl>>& JointInterpolations)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
std::vector<std::vector<FSGInterpolationSetImpl::FInterpolationSetType>> JointInterpolationsVector{
FSGArrayUtils::ToStdVector<FSGInterpolationSetImpl, FSGInterpolationSetImpl::FInterpolationSetType,
@@ -158,12 +148,7 @@ FSGHandInterpolatorImpl::FSGHandInterpolatorImpl(const TArray<TArray<FSGInterpol
FSGHandInterpolatorImpl::FSGHandInterpolatorImpl(const TArray<TArray<FSGInterpolationSetImpl>>& JointInterpolations,
const FQuat& CmcStartRotation)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
std::vector<std::vector<FSGInterpolationSetImpl::FInterpolationSetType>> JointInterpolationsVector{
FSGArrayUtils::ToStdVector<FSGInterpolationSetImpl, FSGInterpolationSetImpl::FInterpolationSetType,
@@ -174,32 +159,18 @@ FSGHandInterpolatorImpl::FSGHandInterpolatorImpl(const TArray<TArray<FSGInterpol
}
FSGHandInterpolatorImpl::FSGHandInterpolatorImpl(const FHandInterpolatorType& HandInterpolator)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->HandInterpolator = HandInterpolator;
}
FSGHandInterpolatorImpl::FSGHandInterpolatorImpl(const FSGHandInterpolatorImpl& Rhs)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
{
Pimpl->Owner = this;
}
FSGHandInterpolatorImpl::FSGHandInterpolatorImpl(FSGHandInterpolatorImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGHandInterpolatorImpl::FSGHandInterpolatorImpl(FSGHandInterpolatorImpl&& Rhs) SG_NOEXCEPT = default;
FSGHandInterpolatorImpl::~FSGHandInterpolatorImpl() = default;
@@ -210,11 +181,7 @@ FSGHandInterpolatorImpl& FSGHandInterpolatorImpl::operator=(const FSGHandInterpo
return *this;
}
FSGHandInterpolatorImpl& FSGHandInterpolatorImpl::operator=(FSGHandInterpolatorImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGHandInterpolatorImpl& FSGHandInterpolatorImpl::operator=(FSGHandInterpolatorImpl&& Rhs) SG_NOEXCEPT = default;
const FSGHandInterpolatorImpl::FHandInterpolatorType& FSGHandInterpolatorImpl::ToHandInterpolator(
) const
@@ -231,33 +198,21 @@ TArray<TArray<FSGInterpolationSetImpl>> FSGHandInterpolatorImpl::GetJointInterpo
return JointInterpolations;
}
void FSGHandInterpolatorImpl::SetJointInterpolations(const TArray<TArray<FSGInterpolationSetImpl>>& JointInterpolations)
{
Pimpl->HandInterpolator.SetJointInterpolations(
FSGArrayUtils::ToStdVector<FSGInterpolationSetImpl, FSGInterpolationSetImpl::FInterpolationSetType,
&FSGInterpolationSetImpl::ToInterpolationSet>(JointInterpolations));
}
FQuat FSGHandInterpolatorImpl::GetCmcStartRotation() const
{
return FSGQuatImpl(Pimpl->HandInterpolator.GetCmcStartRotation()).ToFQuat();
}
void FSGHandInterpolatorImpl::SetCmcStartRotation(const FQuat& CmcStartRotation)
{
Pimpl->HandInterpolator.SetCmcStartRotation(FSGQuatImpl(CmcStartRotation).ToQuat());
}
float FSGHandInterpolatorImpl::CalculateAngle(const ESGFinger Finger, const int32 Movement, const float Value) const
{
return FSGCoordinates::TransformToUnreal(
return FSGAngles::TransformToUnreal(
Movement, Pimpl->HandInterpolator.CalculateAngle(FSGCoreEnumCast::ToEFinger(Finger), Movement, Value));
}
float FSGHandInterpolatorImpl::CalculateAngle(const ESGFinger Finger, const ESGFingerMovement Movement,
const float Value) const
{
return FSGCoordinates::TransformToUnreal(
return FSGAngles::TransformToUnreal(
Movement, Pimpl->HandInterpolator.CalculateAngle(FSGCoreEnumCast::ToEFinger(Finger),
FSGCoreEnumCast::ToEFingerMovement(Movement), Value));
}
@@ -265,7 +220,7 @@ float FSGHandInterpolatorImpl::CalculateAngle(const ESGFinger Finger, const ESGF
float FSGHandInterpolatorImpl::CalculateAngle(const ESGFinger Finger, const ESGThumbMovement Movement,
const float Value) const
{
return FSGCoordinates::TransformToUnreal(
return FSGAngles::TransformToUnreal(
Movement, Pimpl->HandInterpolator.CalculateAngle(FSGCoreEnumCast::ToEFinger(Finger),
FSGCoreEnumCast::ToEThumbMovement(Movement), Value));
}
@@ -275,8 +230,8 @@ void FSGHandInterpolatorImpl::SetInterpolation(
const float InputAt0, const float InputAt1, const float AngleAt0, const float AngleAt1)
{
Pimpl->HandInterpolator.SetInterpolation(Finger, Movement, InputAt0, InputAt1,
FSGCoordinates::TransformToUnreal(Movement, AngleAt0),
FSGCoordinates::TransformToUnreal(Movement, AngleAt1));
FSGAngles::TransformToUnreal(Movement, AngleAt0),
FSGAngles::TransformToUnreal(Movement, AngleAt1));
}
void FSGHandInterpolatorImpl::SetInterpolation(
@@ -286,8 +241,8 @@ void FSGHandInterpolatorImpl::SetInterpolation(
Pimpl->HandInterpolator.SetInterpolation(
FSGCoreEnumCast::ToEFinger(Finger), FSGCoreEnumCast::ToEFingerMovement(Movement),
InputAt0, InputAt1,
FSGCoordinates::TransformToUnreal(Movement, AngleAt0),
FSGCoordinates::TransformToUnreal(Movement, AngleAt1));
FSGAngles::TransformToUnreal(Movement, AngleAt0),
FSGAngles::TransformToUnreal(Movement, AngleAt1));
}
void FSGHandInterpolatorImpl::SetInterpolation(
@@ -296,8 +251,8 @@ void FSGHandInterpolatorImpl::SetInterpolation(
{
Pimpl->HandInterpolator.SetInterpolation(FSGCoreEnumCast::ToEThumbMovement(Movement),
InputAt0, InputAt1,
FSGCoordinates::TransformToUnreal(Movement, AngleAt0),
FSGCoordinates::TransformToUnreal(Movement, AngleAt1));
FSGAngles::TransformToUnreal(Movement, AngleAt0),
FSGAngles::TransformToUnreal(Movement, AngleAt1));
}
FSGInterpolationSetImpl FSGHandInterpolatorImpl::GetInterpolation(const int32 Finger, const int32 Movement) const
@@ -47,8 +47,8 @@
#include "SGCoreImpl/SGCoreEnumCast.h"
#include "SGCoreImpl/SGQuatImpl.h"
#include "SGCoreImpl/SGVect3DImpl.h"
#include "SGUtils/SGAngles.h"
#include "SGUtils/SGArrayUtils.h"
#include "SGUtils/SGCoordinates.h"
struct FSGHandPoseImpl::FImpl
{
@@ -145,23 +145,13 @@ FSGHandPoseImpl FSGHandPoseImpl::Fist(const bool bRightHanded)
}
FSGHandPoseImpl::FSGHandPoseImpl()
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
}
FSGHandPoseImpl::FSGHandPoseImpl(const bool bRightHanded, const TArray<TArray<FVector>>& JointPositions,
const TArray<TArray<FQuat>>& JointRotations, const TArray<TArray<FVector>>& HandAngles)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
std::vector<std::vector<FSGVect3DImpl::FVect3DType>> JointPositionsVector{
FSGArrayUtils::ToMillimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(JointPositions)
@@ -180,32 +170,18 @@ FSGHandPoseImpl::FSGHandPoseImpl(const bool bRightHanded, const TArray<TArray<FV
}
FSGHandPoseImpl::FSGHandPoseImpl(const FHandPoseType& SenseGloveHandPose)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->HandPose = SenseGloveHandPose;
}
FSGHandPoseImpl::FSGHandPoseImpl(const FSGHandPoseImpl& Rhs)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
{
Pimpl->Owner = this;
}
FSGHandPoseImpl::FSGHandPoseImpl(FSGHandPoseImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGHandPoseImpl::FSGHandPoseImpl(FSGHandPoseImpl&& Rhs) SG_NOEXCEPT = default;
FSGHandPoseImpl::~FSGHandPoseImpl() = default;
@@ -216,11 +192,7 @@ FSGHandPoseImpl& FSGHandPoseImpl::operator=(const FSGHandPoseImpl& Rhs)
return *this;
}
FSGHandPoseImpl& FSGHandPoseImpl::operator=(FSGHandPoseImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGHandPoseImpl& FSGHandPoseImpl::operator=(FSGHandPoseImpl&& Rhs) SG_NOEXCEPT = default;
const FSGHandPoseImpl::FHandPoseType& FSGHandPoseImpl::ToHandPose() const
{
@@ -232,11 +204,6 @@ bool FSGHandPoseImpl::IsRight() const
return Pimpl->HandPose.IsRight();
}
void FSGHandPoseImpl::SetIsRight(const bool bRightHanded) const
{
Pimpl->HandPose.SetIsRight(bRightHanded);
}
TArray<TArray<FVector>> FSGHandPoseImpl::GetJointPositions() const
{
TArray<TArray<FVector>> JointPositions{
@@ -246,15 +213,6 @@ TArray<TArray<FVector>> FSGHandPoseImpl::GetJointPositions() const
return MoveTemp(JointPositions);
}
void FSGHandPoseImpl::SetJointPositions(const TArray<TArray<FVector>>& JointPositions) const
{
std::vector<std::vector<FSGVect3DImpl::FVect3DType>> JointPositionsVector{
FSGArrayUtils::ToMillimeters<FSGVect3DImpl::FVect3DType, FSGVect3DImpl>(
JointPositions)
};
Pimpl->HandPose.SetJointPositions(MoveTemp(JointPositionsVector));
}
TArray<TArray<FQuat>> FSGHandPoseImpl::GetJointRotations() const
{
TArray<TArray<FQuat>> JointRotations{
@@ -264,15 +222,6 @@ TArray<TArray<FQuat>> FSGHandPoseImpl::GetJointRotations() const
return MoveTemp(JointRotations);
}
void FSGHandPoseImpl::SetJointRotations(const TArray<TArray<FQuat>>& JointRotations) const
{
std::vector<std::vector<FSGQuatImpl::FQuatType>> JointRotationsVector{
FSGArrayUtils::ToStdVector<FQuat, FSGQuatImpl::FQuatType, FSGQuatImpl, &FSGQuatImpl::ToQuat>(
JointRotations)
};
Pimpl->HandPose.SetJointRotations(MoveTemp(JointRotationsVector));
}
TArray<TArray<FVector>> FSGHandPoseImpl::GetHandAngles() const
{
TArray<TArray<FVector>> HandAngles{
@@ -281,14 +230,6 @@ TArray<TArray<FVector>> FSGHandPoseImpl::GetHandAngles() const
return MoveTemp(HandAngles);
}
void FSGHandPoseImpl::SetHandAngles(const TArray<TArray<FVector>>& HandAngles) const
{
std::vector<std::vector<FSGVect3DImpl::FVect3DType>> HandAnglesVector{
FSGArrayUtils::ToSenseGloveAngles<FSGVect3DImpl::FVect3DType>(HandAngles)
};
Pimpl->HandPose.SetHandAngles(MoveTemp(HandAnglesVector));
}
bool FSGHandPoseImpl::Equals(const FSGHandPoseImpl& HandPoseImpl) const
{
return Pimpl->HandPose.Equals(HandPoseImpl.ToHandPose());
@@ -141,56 +141,32 @@ void FSGHandProfileImpl::ResetCalibration(const bool bOnDisk)
}
FSGHandProfileImpl::FSGHandProfileImpl()
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
}
FSGHandProfileImpl::FSGHandProfileImpl(const bool bRightHanded,
const FSGSenseGloveHandProfileImpl& SenseGloveHandProfile,
const FSGNovaGloveHandProfileImpl& NovaGloveHandProfile)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->HandProfile = FHandProfileType(
bRightHanded, SenseGloveHandProfile.ToSenseGloveHandProfile(), NovaGloveHandProfile.ToNovaGloveHandProfile());
}
FSGHandProfileImpl::FSGHandProfileImpl(const FHandProfileType& SenseGloveHandProfile)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->HandProfile = SenseGloveHandProfile;
}
FSGHandProfileImpl::FSGHandProfileImpl(const FSGHandProfileImpl& Rhs)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
{
Pimpl->Owner = this;
}
FSGHandProfileImpl::FSGHandProfileImpl(FSGHandProfileImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGHandProfileImpl::FSGHandProfileImpl(FSGHandProfileImpl&& Rhs) SG_NOEXCEPT = default;
FSGHandProfileImpl::~FSGHandProfileImpl() = default;
@@ -201,11 +177,7 @@ FSGHandProfileImpl& FSGHandProfileImpl::operator=(const FSGHandProfileImpl& Rhs)
return *this;
}
FSGHandProfileImpl& FSGHandProfileImpl::operator=(FSGHandProfileImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGHandProfileImpl& FSGHandProfileImpl::operator=(FSGHandProfileImpl&& Rhs) SG_NOEXCEPT = default;
const FSGHandProfileImpl::FHandProfileType& FSGHandProfileImpl::ToHandProfile(
) const
@@ -218,31 +190,16 @@ bool FSGHandProfileImpl::IsRight() const
return Pimpl->HandProfile.IsRight();
}
void FSGHandProfileImpl::SetIsRight(const bool bRightHanded) const
{
Pimpl->HandProfile.SetIsRight(bRightHanded);
}
FSGSenseGloveHandProfileImpl FSGHandProfileImpl::GetSenseGloveHandProfile() const
{
return FSGSenseGloveHandProfileImpl(Pimpl->HandProfile.GetSenseGloveHandProfile());
}
void FSGHandProfileImpl::SetSenseGloveHandProfile(const FSGSenseGloveHandProfileImpl& SenseGloveHandProfile)
{
Pimpl->HandProfile.SetSenseGloveHandProfile(SenseGloveHandProfile.ToSenseGloveHandProfile());
}
FSGNovaGloveHandProfileImpl FSGHandProfileImpl::GetNovaGloveHandProfile() const
{
return FSGNovaGloveHandProfileImpl(Pimpl->HandProfile.GetNovaGloveHandProfile());
}
void FSGHandProfileImpl::SetNovaGloveHandProfile(const FSGNovaGloveHandProfileImpl& NovaGloveHandProfile)
{
Pimpl->HandProfile.SetNovaGloveHandProfile(NovaGloveHandProfile.ToNovaGloveHandProfile());
}
bool FSGHandProfileImpl::Equals(const FSGHandProfileImpl& HandProfileImpl) const
{
return Pimpl->HandProfile.Equals(HandProfileImpl.ToHandProfile());
@@ -45,8 +45,8 @@
#include "SGCoreImpl/SGCoreEnumCast.h"
#include "SGCoreImpl/SGSensorRangeImpl.h"
#include "SGCoreImpl/SGVect3DImpl.h"
#include "SGUtils/SGAngles.h"
#include "SGUtils/SGArrayUtils.h"
#include "SGUtils/SGCoordinates.h"
struct FSGHapticGloveCalibrationCheckImpl::FImpl
{
@@ -103,7 +103,7 @@ float FSGHapticGloveCalibrationCheckImpl::GetSenseGloveMinAbduction()
{
/// TODO
/// Maybe use enums?
return FSGCoordinates::TransformToUnreal(2, FHapticGloveCalibrationCheckType::GetSenseGloveMinAbduction());
return FSGAngles::TransformToUnreal(2, FHapticGloveCalibrationCheckType::GetSenseGloveMinAbduction());
}
float FSGHapticGloveCalibrationCheckImpl::GetNovaGloveMinAbduction()
@@ -157,56 +157,32 @@ bool FSGHapticGloveCalibrationCheckImpl::MatchesLast(const TArray<FVector>& Curr
}
FSGHapticGloveCalibrationCheckImpl::FSGHapticGloveCalibrationCheckImpl()
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
}
FSGHapticGloveCalibrationCheckImpl::FSGHapticGloveCalibrationCheckImpl(const FSGSensorRangeImpl& LastCalibrationRange)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->HapticGloveCalibrationCheck = FHapticGloveCalibrationCheckType(LastCalibrationRange.ToSensorRange());
}
FSGHapticGloveCalibrationCheckImpl::FSGHapticGloveCalibrationCheckImpl(
const FHapticGloveCalibrationCheckType& HapticGloveCalibrationCheck)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->HapticGloveCalibrationCheck = HapticGloveCalibrationCheck;
}
FSGHapticGloveCalibrationCheckImpl::FSGHapticGloveCalibrationCheckImpl(
const FSGHapticGloveCalibrationCheckImpl& Rhs)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
{
Pimpl->Owner = this;
}
FSGHapticGloveCalibrationCheckImpl::FSGHapticGloveCalibrationCheckImpl(
FSGHapticGloveCalibrationCheckImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGHapticGloveCalibrationCheckImpl&& Rhs) SG_NOEXCEPT = default;
FSGHapticGloveCalibrationCheckImpl::~FSGHapticGloveCalibrationCheckImpl() = default;
@@ -219,11 +195,7 @@ FSGHapticGloveCalibrationCheckImpl& FSGHapticGloveCalibrationCheckImpl::operator
}
FSGHapticGloveCalibrationCheckImpl& FSGHapticGloveCalibrationCheckImpl::operator=(
FSGHapticGloveCalibrationCheckImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGHapticGloveCalibrationCheckImpl&& Rhs) SG_NOEXCEPT = default;
const FSGHapticGloveCalibrationCheckImpl::FHapticGloveCalibrationCheckType&
FSGHapticGloveCalibrationCheckImpl::ToHapticGloveCalibrationCheck() const
@@ -231,16 +203,6 @@ FSGHapticGloveCalibrationCheckImpl::ToHapticGloveCalibrationCheck() const
return Pimpl->HapticGloveCalibrationCheck;
}
FSGSensorRangeImpl FSGHapticGloveCalibrationCheckImpl::GetLastSensorRange() const
{
return FSGSensorRangeImpl{Pimpl->HapticGloveCalibrationCheck.GetLastSensorRange()};
}
void FSGHapticGloveCalibrationCheckImpl::SetLastSensorRange(const FSGSensorRangeImpl& LastSensorRange)
{
Pimpl->HapticGloveCalibrationCheck.SetLastSensorRange(LastSensorRange.ToSensorRange());
}
ESGCalibrationStage FSGHapticGloveCalibrationCheckImpl::GetCalibrationStage() const
{
return FSGCoreEnumCast::ToESGCalibrationStage(Pimpl->HapticGloveCalibrationCheck.GetCalibrationStage());
@@ -113,23 +113,13 @@ bool FSGHapticGloveCalibrationSequenceImpl::CompileProfile(const FSGSensorRangeI
}
FSGHapticGloveCalibrationSequenceImpl::FSGHapticGloveCalibrationSequenceImpl()
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
}
FSGHapticGloveCalibrationSequenceImpl::FSGHapticGloveCalibrationSequenceImpl(
const TSharedRef<FSGHapticGloveImpl> LinkedGlove)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->HapticGloveCalibrationSequence = MakeShared<FHapticGloveCalibrationSequenceType>(
LinkedGlove->ToHapticGlovePtrChecked());
@@ -137,12 +127,7 @@ FSGHapticGloveCalibrationSequenceImpl::FSGHapticGloveCalibrationSequenceImpl(
FSGHapticGloveCalibrationSequenceImpl::FSGHapticGloveCalibrationSequenceImpl(
const FHapticGloveCalibrationSequenceType& HapticGloveCalibrationSequence)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->HapticGloveCalibrationSequence = MakeShared<FHapticGloveCalibrationSequenceType>(
HapticGloveCalibrationSequence);
@@ -150,12 +135,7 @@ FSGHapticGloveCalibrationSequenceImpl::FSGHapticGloveCalibrationSequenceImpl(
FSGHapticGloveCalibrationSequenceImpl::FSGHapticGloveCalibrationSequenceImpl(
TSharedRef<FHapticGloveCalibrationSequenceType> HapticGloveCalibrationSequence)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->HapticGloveCalibrationSequence =
Pimpl->MakeNewHapticGloveCalibrationSequence(HapticGloveCalibrationSequence);
@@ -163,22 +143,13 @@ FSGHapticGloveCalibrationSequenceImpl::FSGHapticGloveCalibrationSequenceImpl(
FSGHapticGloveCalibrationSequenceImpl::FSGHapticGloveCalibrationSequenceImpl(
const FSGHapticGloveCalibrationSequenceImpl& Rhs)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
{
Pimpl->Owner = this;
}
FSGHapticGloveCalibrationSequenceImpl::FSGHapticGloveCalibrationSequenceImpl(
FSGHapticGloveCalibrationSequenceImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGHapticGloveCalibrationSequenceImpl&& Rhs) SG_NOEXCEPT = default;
FSGHapticGloveCalibrationSequenceImpl::~FSGHapticGloveCalibrationSequenceImpl() = default;
@@ -191,11 +162,7 @@ FSGHapticGloveCalibrationSequenceImpl& FSGHapticGloveCalibrationSequenceImpl::op
}
FSGHapticGloveCalibrationSequenceImpl& FSGHapticGloveCalibrationSequenceImpl::operator=(
FSGHapticGloveCalibrationSequenceImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGHapticGloveCalibrationSequenceImpl&& Rhs) SG_NOEXCEPT = default;
const FSGHapticGloveCalibrationSequenceImpl::FHapticGloveCalibrationSequenceType&
FSGHapticGloveCalibrationSequenceImpl::ToHapticGloveCalibrationSequence() const
@@ -97,45 +97,26 @@ int32 FSGHapticGloveCommandBufferImpl::GetMaxThumpCommands()
}
FSGHapticGloveCommandBufferImpl::FSGHapticGloveCommandBufferImpl()
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
}
FSGHapticGloveCommandBufferImpl::FSGHapticGloveCommandBufferImpl(
const FHapticGloveCommandBufferType& HapticGloveCommandBuffer)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->HapticGloveCommandBuffer = HapticGloveCommandBuffer;
}
FSGHapticGloveCommandBufferImpl::FSGHapticGloveCommandBufferImpl(
const FSGHapticGloveCommandBufferImpl& Rhs)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
{
Pimpl->Owner = this;
}
FSGHapticGloveCommandBufferImpl::FSGHapticGloveCommandBufferImpl(
FSGHapticGloveCommandBufferImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGHapticGloveCommandBufferImpl&& Rhs) SG_NOEXCEPT = default;
FSGHapticGloveCommandBufferImpl::~FSGHapticGloveCommandBufferImpl() = default;
@@ -148,11 +129,7 @@ FSGHapticGloveCommandBufferImpl& FSGHapticGloveCommandBufferImpl::operator=(
}
FSGHapticGloveCommandBufferImpl& FSGHapticGloveCommandBufferImpl::operator=(
FSGHapticGloveCommandBufferImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGHapticGloveCommandBufferImpl&& Rhs) SG_NOEXCEPT = default;
const FSGHapticGloveCommandBufferImpl::FHapticGloveCommandBufferType&
FSGHapticGloveCommandBufferImpl::ToHapticGloveCommandBuffer() const
@@ -170,16 +147,6 @@ TArray<FSGForceFeedbackCommandImpl> FSGHapticGloveCommandBufferImpl::GetForceFee
return MoveTemp(ForceFeedbackCommandQueue);
}
void FSGHapticGloveCommandBufferImpl::SetForceFeedbackCommandsQueue(
const TArray<FSGForceFeedbackCommandImpl>& ForceFeedbackCommandsQueue)
{
std::vector<FSGForceFeedbackCommandImpl::FForceFeedbackCommandType> ForceFeedbackCommandsQueueVector{
FSGArrayUtils::ToStdVector<FSGForceFeedbackCommandImpl, FSGForceFeedbackCommandImpl::FForceFeedbackCommandType,
&FSGForceFeedbackCommandImpl::ToForceFeedbackCommand>(ForceFeedbackCommandsQueue)
};
Pimpl->HapticGloveCommandBuffer.SetForceFeedbackCommandsQueue(MoveTemp(ForceFeedbackCommandsQueueVector));
}
TArray<FSGTimedBuzzCommandImpl> FSGHapticGloveCommandBufferImpl::GetBuzzCommandsQueue() const
{
TArray<FSGTimedBuzzCommandImpl> TimedBuzzCommandQueue{
@@ -189,16 +156,6 @@ TArray<FSGTimedBuzzCommandImpl> FSGHapticGloveCommandBufferImpl::GetBuzzCommands
return MoveTemp(TimedBuzzCommandQueue);
}
void FSGHapticGloveCommandBufferImpl::SetBuzzCommandsQueue(
const TArray<FSGTimedBuzzCommandImpl>& TimedBuzzCommandsQueue)
{
std::vector<FSGTimedBuzzCommandImpl::FTimedBuzzCommandType> TimedBuzzCommandsQueueVector{
FSGArrayUtils::ToStdVector<FSGTimedBuzzCommandImpl, FSGTimedBuzzCommandImpl::FTimedBuzzCommandType,
&FSGTimedBuzzCommandImpl::ToTimedBuzzCommand>(TimedBuzzCommandsQueue)
};
Pimpl->HapticGloveCommandBuffer.SetBuzzCommandsQueue(MoveTemp(TimedBuzzCommandsQueueVector));
}
TArray<FSGTimedThumpCommandImpl> FSGHapticGloveCommandBufferImpl::GetThumperCommandsQueue() const
{
TArray<FSGTimedThumpCommandImpl> ThumperCommandQueue{
@@ -208,16 +165,6 @@ TArray<FSGTimedThumpCommandImpl> FSGHapticGloveCommandBufferImpl::GetThumperComm
return MoveTemp(ThumperCommandQueue);
}
void FSGHapticGloveCommandBufferImpl::SetThumperCommandsQueue(
const TArray<FSGTimedThumpCommandImpl>& TimedThumpCommandsQueue)
{
std::vector<FSGTimedThumpCommandImpl::FTimedThumpCommandType> TimedThumpCommandsQueueVector{
FSGArrayUtils::ToStdVector<FSGTimedThumpCommandImpl, FSGTimedThumpCommandImpl::FTimedThumpCommandType,
&FSGTimedThumpCommandImpl::ToTimedThumpCommand>(TimedThumpCommandsQueue)
};
Pimpl->HapticGloveCommandBuffer.SetThumperCommandsQueue(MoveTemp(TimedThumpCommandsQueueVector));
}
void FSGHapticGloveCommandBufferImpl::ClearForceFeedbackCommandsQueue()
{
Pimpl->HapticGloveCommandBuffer.ClearForceFeedbackCommandsQueue();
@@ -126,40 +126,24 @@ bool FSGHapticGloveImpl::GetGlove(const bool bRightHanded, TSharedPtr<FSGHapticG
FSGHapticGloveImpl::FSGHapticGloveImpl()
: FSGDeviceImpl(),
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
{
}
FSGHapticGloveImpl::FSGHapticGloveImpl(const FHapticGlovePtrType HapticGlove)
: FSGDeviceImpl(std::dynamic_pointer_cast<FSGDeviceType>(HapticGlove)),
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
{
}
FSGHapticGloveImpl::FSGHapticGloveImpl(const FSGHapticGloveImpl& Rhs)
: FSGDeviceImpl(Rhs),
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}))
#endif /* SG_CPP17 */
{
Pimpl->Owner = this;
}
FSGHapticGloveImpl::FSGHapticGloveImpl(FSGHapticGloveImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGHapticGloveImpl::FSGHapticGloveImpl(FSGHapticGloveImpl&& Rhs) SG_NOEXCEPT = default;
FSGHapticGloveImpl::~FSGHapticGloveImpl() = default;
@@ -171,11 +155,7 @@ FSGHapticGloveImpl& FSGHapticGloveImpl::operator=(const FSGHapticGloveImpl& Rhs)
return *this;
}
FSGHapticGloveImpl& FSGHapticGloveImpl::operator=(FSGHapticGloveImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGHapticGloveImpl& FSGHapticGloveImpl::operator=(FSGHapticGloveImpl&& Rhs) SG_NOEXCEPT = default;
FSGHapticGloveImpl::FHapticGlovePtrType FSGHapticGloveImpl::ToHapticGlovePtr() const
{
@@ -225,7 +205,7 @@ bool FSGHapticGloveImpl::GetImuRotation(FQuat& OutImu)
{
FSGQuatImpl::FQuatType Imu;
const bool bResult = ToHapticGlovePtrChecked()->GetImuRotation(Imu);
OutImu = FSGQuatImpl(MoveTemp(Imu)).ToFQuat();
OutImu = FSGQuatImpl{MoveTemp(Imu)}.ToFQuat();
return bResult;
}
@@ -235,7 +215,7 @@ bool FSGHapticGloveImpl::GetHandPose(const FSGBasicHandModelImpl& HandGeometry,
FSGHandPoseImpl::FHandPoseType HandPose;
const bool bResult = ToHapticGlovePtrChecked()->GetHandPose(HandGeometry.ToBasicHandModel(),
HandProfile.ToHandProfile(), HandPose);
OutHandPose = FSGHandPoseImpl(MoveTemp(HandPose));
OutHandPose = FSGHandPoseImpl{MoveTemp(HandPose)};
return bResult;
}
@@ -243,7 +223,7 @@ bool FSGHapticGloveImpl::GetHandPose(const FSGHandProfileImpl& HandProfile, FSGH
{
FSGHandPoseImpl::FHandPoseType HandPose;
const bool bResult = ToHapticGlovePtrChecked()->GetHandPose(HandProfile.ToHandProfile(), HandPose);
OutHandPose = FSGHandPoseImpl(MoveTemp(HandPose));
OutHandPose = FSGHandPoseImpl{MoveTemp(HandPose)};
return bResult;
}
@@ -251,7 +231,7 @@ bool FSGHapticGloveImpl::GetHandPose(const FSGBasicHandModelImpl& HandGeometry,
{
FSGHandPoseImpl::FHandPoseType HandPose;
const bool bResult = ToHapticGlovePtrChecked()->GetHandPose(HandGeometry.ToBasicHandModel(), HandPose);
OutHandPose = FSGHandPoseImpl(MoveTemp(HandPose));
OutHandPose = FSGHandPoseImpl{MoveTemp(HandPose)};
return bResult;
}
@@ -259,10 +239,20 @@ bool FSGHapticGloveImpl::GetHandPose(FSGHandPoseImpl& OutHandPose)
{
FSGHandPoseImpl::FHandPoseType HandPose;
const bool bResult = ToHapticGlovePtrChecked()->GetHandPose(HandPose);
OutHandPose = FSGHandPoseImpl(MoveTemp(HandPose));
OutHandPose = FSGHandPoseImpl{MoveTemp(HandPose)};
return bResult;
}
#if PLATFORM_ANDROID
bool FSGHapticGloveImpl::GetHandPose(const float DeltaTime, FSGHandPoseImpl& OutHandPose)
{
FSGHandPoseImpl::FHandPoseType HandPose;
const bool bResult = ToHapticGlovePtrChecked()->GetHandPose(DeltaTime, HandPose);
OutHandPose = FSGHandPoseImpl{MoveTemp(HandPose)};
return bResult;
}
#endif /* PLATFORM_ANDROID */
void FSGHapticGloveImpl::StopHaptics()
{
ToHapticGlovePtrChecked()->StopHaptics();
@@ -88,11 +88,7 @@ float FSGHapticGloveQuickCalibrationImpl::GetDefaultAutoEndTimeout()
FSGHapticGloveQuickCalibrationImpl::FSGHapticGloveQuickCalibrationImpl()
: FSGHapticGloveCalibrationSequenceImpl(),
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
{
}
@@ -100,42 +96,25 @@ FSGHapticGloveQuickCalibrationImpl::FSGHapticGloveQuickCalibrationImpl(
const TSharedRef<FSGHapticGloveImpl> GloveToCalibrate, const float AutoEndTimeout)
: FSGHapticGloveCalibrationSequenceImpl(
MakeShared<FHapticGloveQuickCalibrationType>(GloveToCalibrate->ToHapticGlovePtr(), AutoEndTimeout)),
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
{
}
FSGHapticGloveQuickCalibrationImpl::FSGHapticGloveQuickCalibrationImpl(
const FHapticGloveQuickCalibrationType& HapticGloveQuickCalibration)
: FSGHapticGloveCalibrationSequenceImpl(MakeShared<FHapticGloveQuickCalibrationType>(HapticGloveQuickCalibration)),
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
}
FSGHapticGloveQuickCalibrationImpl::FSGHapticGloveQuickCalibrationImpl(const FSGHapticGloveQuickCalibrationImpl& Rhs)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
{
Pimpl->Owner = this;
}
FSGHapticGloveQuickCalibrationImpl::FSGHapticGloveQuickCalibrationImpl(
FSGHapticGloveQuickCalibrationImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGHapticGloveQuickCalibrationImpl&& Rhs) SG_NOEXCEPT = default;
FSGHapticGloveQuickCalibrationImpl::~FSGHapticGloveQuickCalibrationImpl() = default;
@@ -148,11 +127,7 @@ FSGHapticGloveQuickCalibrationImpl& FSGHapticGloveQuickCalibrationImpl::operator
}
FSGHapticGloveQuickCalibrationImpl& FSGHapticGloveQuickCalibrationImpl::operator=(
FSGHapticGloveQuickCalibrationImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGHapticGloveQuickCalibrationImpl&& Rhs) SG_NOEXCEPT = default;
const FSGHapticGloveQuickCalibrationImpl::FHapticGloveQuickCalibrationType&
FSGHapticGloveQuickCalibrationImpl::ToHapticGloveQuickCalibration() const
@@ -171,11 +146,6 @@ float FSGHapticGloveQuickCalibrationImpl::GetAutoEndTimeout() const
return ToHapticGloveQuickCalibrationRef()->GetAutoEndTimeout();
}
void FSGHapticGloveQuickCalibrationImpl::SetAutoEndTimeout(const float AutoEndTimeout)
{
ToHapticGloveQuickCalibrationRef()->SetAutoEndTimeout(AutoEndTimeout);
}
int32 FSGHapticGloveQuickCalibrationImpl::GetSmoothingSamples() const
{
return ToHapticGloveQuickCalibrationRef()->GetSmoothingSamples();
@@ -81,65 +81,36 @@ FSGInterpolationSetImpl FSGInterpolationSetImpl::Deserialize(const FString& Seri
}
FSGInterpolationSetImpl::FSGInterpolationSetImpl()
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
}
FSGInterpolationSetImpl::FSGInterpolationSetImpl(const float From1, const float From2, const float To1, const float To2)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->InterpolationSet = FInterpolationSetType(From1, From2, To1, To2);
}
FSGInterpolationSetImpl::FSGInterpolationSetImpl(const float From1, const float From2, const float To1, const float To2,
const float Min, const float Max)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->InterpolationSet = FInterpolationSetType(From1, From2, To1, To2, Min, Max);
}
FSGInterpolationSetImpl::FSGInterpolationSetImpl(const FInterpolationSetType& InterpolationSet)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->InterpolationSet = InterpolationSet;
}
FSGInterpolationSetImpl::FSGInterpolationSetImpl(const FSGInterpolationSetImpl& Rhs)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
{
Pimpl->Owner = this;
}
FSGInterpolationSetImpl::FSGInterpolationSetImpl(FSGInterpolationSetImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGInterpolationSetImpl::FSGInterpolationSetImpl(FSGInterpolationSetImpl&& Rhs) SG_NOEXCEPT = default;
FSGInterpolationSetImpl::~FSGInterpolationSetImpl() = default;
@@ -150,11 +121,7 @@ FSGInterpolationSetImpl& FSGInterpolationSetImpl::operator=(const FSGInterpolati
return *this;
}
FSGInterpolationSetImpl& FSGInterpolationSetImpl::operator=(FSGInterpolationSetImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGInterpolationSetImpl& FSGInterpolationSetImpl::operator=(FSGInterpolationSetImpl&& Rhs) SG_NOEXCEPT = default;
const FSGInterpolationSetImpl::FInterpolationSetType& FSGInterpolationSetImpl::ToInterpolationSet() const
{
@@ -89,53 +89,29 @@ FSGNovaGloveHandProfileImpl FSGNovaGloveHandProfileImpl::Deserialize(const FStri
}
FSGNovaGloveHandProfileImpl::FSGNovaGloveHandProfileImpl()
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
}
FSGNovaGloveHandProfileImpl::FSGNovaGloveHandProfileImpl(bool bRightHanded, const FSGHandInterpolatorImpl& Interpolator)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->NovaGloveHandProfile = FNovaGloveHandProfileType(bRightHanded, Interpolator.ToHandInterpolator());
}
FSGNovaGloveHandProfileImpl::FSGNovaGloveHandProfileImpl(const FNovaGloveHandProfileType& NovaGloveHandProfile)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{this}, PimplDeleter))
{
Pimpl->NovaGloveHandProfile = NovaGloveHandProfile;
}
FSGNovaGloveHandProfileImpl::FSGNovaGloveHandProfileImpl(const FSGNovaGloveHandProfileImpl& Rhs)
:
#if SG_CPP17
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
#else
Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}))
#endif /* SG_CPP17 */
: Pimpl(TUniquePtr<FImpl, FImplDeleter>(new FImpl{*Rhs.Pimpl}, PimplDeleter))
{
Pimpl->Owner = this;
}
FSGNovaGloveHandProfileImpl::FSGNovaGloveHandProfileImpl(FSGNovaGloveHandProfileImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
= default;
FSGNovaGloveHandProfileImpl::FSGNovaGloveHandProfileImpl(FSGNovaGloveHandProfileImpl&& Rhs) SG_NOEXCEPT = default;
FSGNovaGloveHandProfileImpl::~FSGNovaGloveHandProfileImpl() = default;
@@ -146,10 +122,7 @@ FSGNovaGloveHandProfileImpl& FSGNovaGloveHandProfileImpl::operator=(const FSGNov
return *this;
}
FSGNovaGloveHandProfileImpl& FSGNovaGloveHandProfileImpl::operator=(FSGNovaGloveHandProfileImpl&& Rhs)
#if SG_CPP17
noexcept
#endif /* SG_CPP17 */
FSGNovaGloveHandProfileImpl& FSGNovaGloveHandProfileImpl::operator=(FSGNovaGloveHandProfileImpl&& Rhs) SG_NOEXCEPT
= default;
const FSGNovaGloveHandProfileImpl::FNovaGloveHandProfileType& FSGNovaGloveHandProfileImpl::ToNovaGloveHandProfile(
@@ -163,11 +136,6 @@ bool FSGNovaGloveHandProfileImpl::IsRight() const
return Pimpl->NovaGloveHandProfile.IsRight();
}
void FSGNovaGloveHandProfileImpl::SetIsRight(const bool bRightHanded)
{
Pimpl->NovaGloveHandProfile.SetIsRight(bRightHanded);
}
FSGHandInterpolatorImpl FSGNovaGloveHandProfileImpl::GetInterpolationSet() const
{
const FSGHandInterpolatorImpl HandInterpolatorImpl(
@@ -175,11 +143,6 @@ FSGHandInterpolatorImpl FSGNovaGloveHandProfileImpl::GetInterpolationSet() const
return HandInterpolatorImpl;
}
void FSGNovaGloveHandProfileImpl::SetInterpolationSet(const FSGHandInterpolatorImpl& InterpolationSet)
{
Pimpl->NovaGloveHandProfile.SetInterpolationSet(InterpolationSet.ToHandInterpolator());
}
bool FSGNovaGloveHandProfileImpl::Equals(const FSGNovaGloveHandProfileImpl& NovaGloveHandProfileImpl) const
{
return Pimpl->NovaGloveHandProfile.Equals(NovaGloveHandProfileImpl.ToNovaGloveHandProfile());

Some files were not shown because too many files have changed in this diff Show More