Compare commits

..
424 Commits
Author SHA1 Message Date
Mamadou Babaei 1cbe24a4c9 bump the plugin version to v2.2.2 2024-11-08 12:24:07 +01:00
Mamadou Babaei 1e11ab6320 fix a chain of glove and hand-tracking bugs that render the hand-tracking state invalid at certain times 2024-11-08 12:24:07 +01:00
Mamadou Babaei 551e625c1f bump the plugin version to v2.2.1 2024-10-23 14:47:23 +02:00
Mamadou Babaei 287a81356d revise documentation to point to fab instead of ue marketplace 2024-10-23 14:47:23 +02:00
Mamadou Babaei 02690badc6 bump the plugin version to v2.2.0 2024-10-22 06:42:53 +02:00
Mamadou Babaei ba4441655f list ue 5.5 in the sgum-packager configuration file 2024-10-22 06:42:53 +02:00
Mamadou Babaei 9b361f5ef9 include Runtime/Launch/Resources/Version.h only where it matters 2024-10-22 06:42:52 +02:00
Mamadou Babaei 22210f05f0 add the documentation on consuming the FXRHandTrackingState struct in both Blueprint and C++ 2024-10-22 06:42:52 +02:00
Mamadou Babaei baa2998c8d minor formatting fix 2024-10-22 06:42:52 +02:00
Mamadou Babaei 4b2654a296 change SG_BROWSER_BINARY_PATH_LINUX binary path 2024-10-22 06:42:52 +02:00
Mamadou Babaei 3393a31e5f migrate away from the deprecated FXRMotionControllerData in favor of FXRMotionControllerState and FXRHandTrackingState on UE 5.5+ 2024-10-22 06:42:47 +02:00
Mamadou Babaei 3d274c1734 bump the plugin version to v2.1.4 2024-10-22 05:27:44 +02:00
Mamadou Babaei eb8a8b197b add the missing release title to the v2.1.3 changelog entry 2024-10-22 05:26:49 +02:00
Mamadou Babaei f3f5893fd8 update the documentation on consuming the FXRMotionControllerData struct 2024-10-22 05:26:47 +02:00
Mamadou Babaei c8801a48fa bump the plugin version to v2.1.3 2024-10-11 12:30:22 +02:00
Mamadou Babaei de11ff03c8 update the platform support matrix and also add a note in regards to fab and ue marketplace transition 2024-10-11 12:30:22 +02:00
Mamadou Babaei 42c560c43c add the planned features for the v2.2.x release series 2024-10-11 12:30:22 +02:00
Mamadou Babaei dfdb6017dc silence another ue 5.5 deprecation warning with a temporary workaround for the time being 2024-10-11 12:30:22 +02:00
Mamadou Babaei 2523b54a91 avoid mentioning the patch releases in the planned features completion status page 2024-10-11 12:30:22 +02:00
Mamadou Babaei 1d9ca12cf8 address a few ue 5.5 deprecation warnings 2024-10-11 12:30:22 +02:00
Mamadou Babaei 50599d2832 add a missing header 2024-10-11 12:30:22 +02:00
Mamadou Babaei 843c528fe1 add support for epic native toolchain v23 2024-10-11 12:30:22 +02:00
Mamadou Babaei 33a0bc10b8 bump the senseglove libraries to v2.105.2-f2de4b89 2024-10-11 12:30:21 +02:00
Mamadou Babaei 2dfb39842e fix code formatting 2024-10-11 12:30:21 +02:00
Mamadou Babaei bae22c36f5 remove a redundant header 2024-10-11 12:30:21 +02:00
Mamadou Babaei cfa01f1b97 fix a bug inside USGVirtualHandComponent::PostEditChangeProperty() where the get member name check happens against the wrong class and member names 2024-10-11 12:30:21 +02:00
Mamadou Babaei ab72a893e5 fix a grammatical typo in a comment 2024-10-11 12:30:21 +02:00
Mamadou Babaei 5c902276e9 bump the plugin version to v2.1.2 2024-09-02 19:38:01 +02:00
Mamadou Babaei 63ff7ba433 update the changelog 2024-09-02 19:38:01 +02:00
Mamadou Babaei 4ee17604dd update the changelog 2024-09-02 19:38:01 +02:00
Mamadou Babaei 937b298d83 fix a few virtual hand component visibility issues 2024-09-02 19:38:01 +02:00
Mamadou Babaei 5c33917333 fix the non-existent default hand-mesh warnings polluting the logs when packaging the game 2024-09-02 19:38:01 +02:00
Mamadou Babaei 6d2103bb9b update the changelog 2024-09-02 19:38:01 +02:00
Mamadou Babaei 0b30940ee7 fix the wrong script name for USXRTrackerKismetLibrary 2024-09-02 19:38:01 +02:00
Mamadou Babaei ba92e4313d fix the wrong script name for USGHMDTrackerKismetLibrary 2024-09-02 19:38:01 +02:00
Mamadou Babaei c9e8e24ee0 expand the clickable area on the handbook index page revision buttons 2024-09-02 19:38:01 +02:00
Mamadou Babaei f19f76d439 an overview title fix to match the summary file 2024-09-02 19:38:00 +02:00
Mamadou Babaei 3ddef7fe40 bump the SenseGlove Unreal Engine Plugin to v2.1.1 2024-08-18 01:46:19 +02:00
Mamadou Babaei 98c40746d2 fix documentation typos 2024-08-18 01:46:19 +02:00
Mamadou Babaei 59f8e1a71a fix a bug where SG_GIT_IS_SHALLOW_CLONE while building the handbook is always set to yes even if it's not a shadow clone 2024-08-18 01:32:14 +02:00
Mamadou Babaei 5a9768b42e removed android ndk r25 armv7 and x86 dependencies brought back by mistake while merging v2.1.0 from the dev branch to the master branch 2024-08-18 00:53:07 +02:00
Mamadou Babaei fc679a9f42 fix a bug that causes a handbook revision mismatch when deploying the handbook from the dev branch 2024-08-18 00:27:05 +02:00
Mamadou Babaei 978883d19b fix the messed up changelog file caused by cherry-picking merge conflicts between the dev branch and the master branch 2024-08-18 00:05:25 +02:00
Mamadou Babaei afc2c75b85 bump the plugin version to v2.1.0 2024-08-16 19:53:26 +02:00
Mamadou Babaei f37273bb48 fix build issues caused by cherry-pick order between v2.0.x and v2.1.x releases; the dev branch already contains these fixes 2024-08-16 19:52:00 +02:00
Mamadou Babaei ae58cfa20a extract the git version from the remote repo when it's a shallow clone to allow the sgum-packager work with release branches 2024-08-16 19:08:50 +02:00
Mamadou Babaei b49de07ca5 determine the value of mdbook site-url from the makefile instead of hardcoding it per branch 2024-08-16 16:44:35 +02:00
Mamadou Babaei d6f4090951 fix ue 5.4 runuat build issues inside the sggrabcomponent caused by missing headers 2024-08-16 16:44:35 +02:00
Mamadou Babaei c50fa7780f fix a broken url 2024-08-16 16:44:35 +02:00
Mamadou Babaei a77acc4bd7 add make pack to the output of make help 2024-08-16 16:44:35 +02:00
Mamadou Babaei db2208dd67 fix a broken url 2024-08-16 16:44:35 +02:00
Mamadou Babaei a5161f6a84 fix a url 2024-08-16 16:44:35 +02:00
Mamadou Babaei 2fbf161fdd add topic: Upgrade Guide 2024-08-16 16:44:35 +02:00
Mamadou Babaei 32d1f2f6e7 add the sub-topic: Optimizing Unreal Projects for Mobile 2024-08-16 16:44:35 +02:00
Mamadou Babaei d0792c1abe formatting fixes 2024-08-16 16:44:35 +02:00
Mamadou Babaei 9afbf885f3 add topic: Optimizing Your Project for Higher FPS 2024-08-16 16:44:34 +02:00
Mamadou Babaei b19161f964 lock cargo dependencies for the hadbook to pecific major/minor releases and not patch releases 2024-08-16 16:44:34 +02:00
Mamadou Babaei f6878e7ae1 clarify the note about how the separation of the real and virtual hand rendering is broken 2024-08-16 16:44:34 +02:00
Mamadou Babaei c557942d27 fix a typo 2024-08-16 16:44:34 +02:00
Mamadou Babaei d8636b630a remove troublesome inline keywords added by jetbrains rider 2024-08-16 16:44:34 +02:00
Mamadou Babaei 89af27ac7d mark the separation of the real and virtual hand rendering as broken and a note to the known issues section 2024-08-16 16:44:34 +02:00
Mamadou Babaei 909684d36e fix a few bugs that does affect the real hand collision events because of SetVisibility and redundant checking against grabbed actor 2024-08-16 16:44:34 +02:00
Mamadou Babaei 6b0d87cad5 replace SGPawn::FImpl::EnableActorPhysics() and SGPawn::FImpl::DisableActorPhysics() with USGGrabComponent::SimulatePhysics() 2024-08-16 16:44:34 +02:00
Mamadou Babaei 058bc5a87c enable bGravityEnabled, bSimulatePhysics, and call WakeRigidBody on grab component's owning actor at BeginPlay() if bAffectPhysicsState is enabled 2024-08-16 16:44:34 +02:00
Mamadou Babaei 787ab5aa96 document Configuring the SGPawn and Plugin Virtual Hand Mesh Settings as the final step in setting up the virtual hand meshes 2024-08-16 16:44:34 +02:00
Mamadou Babaei dceee38c40 fix a typo 2024-08-16 16:44:34 +02:00
Mamadou Babaei f6784a04ad use the value of GrabAttachPointSocketName from the plugin settings as default for USGGrabComponent's AttachmentSocketName uproperty 2024-08-16 16:44:34 +02:00
Mamadou Babaei dc0178b911 add the sgbasicdemo-openxr repository to the examples and demo projects section 2024-08-16 16:44:34 +02:00
Mamadou Babaei 64d29637cc minor fix 2024-08-16 16:44:34 +02:00
Mamadou Babaei ac6500becd add video tutorials 2024-08-16 16:44:34 +02:00
Mamadou Babaei dc5c0e220e add the contents for setting up the grab/release, and the touch systems 2024-08-16 16:44:33 +02:00
Mamadou Babaei 9b609e881a add another android note 2024-08-16 16:44:33 +02:00
Mamadou Babaei 0720dff14a fix the display name for various overloads of the Blueprint-exposed function Queue Command Vibro Level to expose sensible display names. 2024-08-16 16:44:33 +02:00
Mamadou Babaei 2e63b956d4 a changelog fix 2024-08-16 16:44:33 +02:00
Mamadou Babaei 1301ec957b fix a topic title 2024-08-16 16:44:33 +02:00
Mamadou Babaei 7fd999face minor fix 2024-08-16 16:44:33 +02:00
Mamadou Babaei c772eea773 add topic: Deploying to Android (Standalone) 2024-08-16 16:44:33 +02:00
Mamadou Babaei 931c626669 add a note in regards to meta xr and vive openxr plugins incompatibility 2024-08-16 16:44:33 +02:00
Mamadou Babaei b7a2e79503 add instructions: Setting up the SenseGlove Grab and Touch Sockets 2024-08-16 16:44:33 +02:00
Mamadou Babaei 5d9f763443 remove irrelevant section as it's already set up by the plugin automatically 2024-08-16 16:44:33 +02:00
Mamadou Babaei 08c1d21ce3 mention a relevant video tutorial 2024-08-16 16:44:33 +02:00
Mamadou Babaei 71f1153aee close the div tag properly 2024-08-16 16:44:33 +02:00
Mamadou Babaei 2a636323c4 add the instructions for: Setting up the Rigid Bodies 2024-08-16 16:44:32 +02:00
Mamadou Babaei eb69306ed1 fix license titles 2024-08-16 16:44:32 +02:00
Mamadou Babaei 1577889762 add instructions for importing / exporting compatible virtual hand meshes 2024-08-16 16:44:32 +02:00
Mamadou Babaei b88c124e4b minor fix 2024-08-16 16:44:32 +02:00
Mamadou Babaei 1c776eda27 update the overview section 2024-08-16 16:44:32 +02:00
Mamadou Babaei a77e73379a add the content for setting up the wrist tracking hardware section 2024-08-16 16:44:32 +02:00
Mamadou Babaei 767bd66f62 add important notes for setting up the wrist tracker and virtual hands 2024-08-16 16:44:32 +02:00
Mamadou Babaei dc7ccec543 add the complete documentation for setting up the senseglove default classes 2024-08-16 16:44:32 +02:00
Mamadou Babaei e04a66935e fix a build issue on ue 5.2 2024-08-16 16:44:32 +02:00
Mamadou Babaei fd0749314c apply summary.md changes to the overview page 2024-08-16 16:44:32 +02:00
Mamadou Babaei 4ccd4e63d1 fix borken links 2024-08-16 16:44:32 +02:00
Mamadou Babaei cd8f1ce367 add more topics to the menu 2024-08-16 16:44:32 +02:00
Mamadou Babaei 15e6e17116 minor fix 2024-08-16 16:44:32 +02:00
Mamadou Babaei 29b13be460 add the introduction to the senseglove default classes 2024-08-16 16:44:32 +02:00
Mamadou Babaei daef678e73 fix the wrong content path 2024-08-16 16:44:31 +02:00
Mamadou Babaei 9c5c1c6134 fix README.md broken links 2024-08-16 16:44:31 +02:00
Mamadou Babaei a5fc3ab518 add a caution for bvalidateifdefaultclassesaresgcompliant 2024-08-16 16:44:31 +02:00
Mamadou Babaei 36d4cdde1f fix a typo 2024-08-16 16:44:31 +02:00
Mamadou Babaei c82530cecf add the console commands SG_GetEngineScalabilitySettings and SG_SetEngineScalabilitySettings 2024-08-16 16:44:31 +02:00
Mamadou Babaei 826022ab40 add the license terms for the handbook 2024-08-16 16:44:31 +02:00
Mamadou Babaei 479609686d add the boilerplate for setting up the senseglove default classes 2024-08-16 16:44:31 +02:00
Mamadou Babaei 6526c0e3b3 fix broken links in the overview page by adding .. to the relative urls 2024-08-16 16:44:31 +02:00
Mamadou Babaei ac4fed8a82 fix broken index/readme.md links in the overview page 2024-08-16 16:44:31 +02:00
Mamadou Babaei e19621dea8 minor fix 2024-08-16 16:44:31 +02:00
Mamadou Babaei 5bc78b7dc6 add the content for the overview page 2024-08-16 16:44:31 +02:00
Mamadou Babaei 006165605f minor fix 2024-08-16 16:44:31 +02:00
Mamadou Babaei 76bcfae33a complete the plugin configuration, settings, and overrides, sections 2024-08-16 16:44:31 +02:00
Mamadou Babaei ef5cf020e7 improve the repo's main readme file 2024-08-16 16:44:30 +02:00
Mamadou Babaei 96d2f5fb60 reference the handbook's extra resources 2024-08-16 16:44:30 +02:00
Mamadou Babaei 3c606100f8 bring on par the SGSettings blueprint api with the cpp api 2024-08-16 16:44:30 +02:00
Mamadou Babaei ee8b209055 add some custom css styles for better html formatting 2024-08-16 16:44:30 +02:00
Mamadou Babaei d8a4c7bc81 add the plugin-settings section 2024-08-16 16:44:30 +02:00
Mamadou Babaei 79309f66d0 add a note about Hand and Body Tracking settings 2024-08-16 16:44:30 +02:00
Mamadou Babaei 57c34ea44b add the sensecom documentation 2024-08-16 16:44:30 +02:00
Mamadou Babaei 1a26d4a465 add a caution in regards to broken meta quest hmds on steamvr 2024-08-16 16:44:30 +02:00
Mamadou Babaei f3e21842b3 fix youtube video urls 2024-08-16 16:44:30 +02:00
Mamadou Babaei 81186177e6 whitespace fix 2024-08-16 16:44:30 +02:00
Mamadou Babaei 4211633ce5 add the low level api documentation 2024-08-16 16:44:30 +02:00
Mamadou Babaei 2c790d7b5f complete installation instructions 2024-08-16 16:44:30 +02:00
Mamadou Babaei e8317c31b2 Revert "move bFallbackToHandTrackingIfNoGloveDetected from tracking settings to glove tracking settings"
This reverts commit e16c1d216f.
2024-08-16 16:44:30 +02:00
Mamadou Babaei fac9e0e7ce move bFallbackToHandTrackingIfNoGloveDetected from tracking settings to glove tracking settings 2024-08-16 16:44:30 +02:00
Mamadou Babaei aff68a4673 add an important alert 2024-08-16 16:44:30 +02:00
Mamadou Babaei 6a4294467b minor fixes 2024-08-16 16:44:29 +02:00
Mamadou Babaei 008a3bbc0d fix a broken link 2024-08-16 16:44:29 +02:00
Mamadou Babaei f93bc57349 add instructions: Enabling XR_EXT_hand_tracking OpenXR extension on VR Headsets 2024-08-16 16:44:29 +02:00
Mamadou Babaei e3b9382649 add topic: Extra Resources 2024-08-16 16:44:29 +02:00
Mamadou Babaei aba3dfdf8f add instructions: Safe and Reliable Glove Access in Blueprint 2024-08-16 16:44:29 +02:00
Mamadou Babaei c7e91d0050 center all youtube videos 2024-08-16 16:44:29 +02:00
Mamadou Babaei 0ead89d3e5 add instructions: Enabling The SenseGlove Unreal Engine Plugin and Veirfying the Plugin Version 2024-08-16 16:44:29 +02:00
Mamadou Babaei e3659e23e6 whitespace fix 2024-08-16 16:44:29 +02:00
Mamadou Babaei 81b3a194cd add the epic games launcher installation instructions 2024-08-16 16:44:29 +02:00
Mamadou Babaei ac8056bc46 replace inline code blocks with back tilde inside the changelog 2024-08-16 16:44:29 +02:00
Mamadou Babaei 0d0e6f8c2e update the changelog 2024-08-16 16:44:29 +02:00
Mamadou Babaei 34b62b30d0 revamp the main readme file with the latest information and instructions 2024-08-16 16:44:29 +02:00
Mamadou Babaei 29905ef100 change the DocsURL from the old blueprint docs to the handbook 2024-08-16 16:44:29 +02:00
Mamadou Babaei 4b4c877325 improve the main index layout 2024-08-16 16:44:28 +02:00
Mamadou Babaei cd2af222a8 make the main index generation code more readable 2024-08-16 16:44:28 +02:00
Mamadou Babaei af60f75096 deploy the favicon to the main index as well 2024-08-16 16:44:28 +02:00
Mamadou Babaei 50b84f2d63 bump the SenseGlove Unreal Engine Marketplace Packager v0.4.0-a65bb20 2024-08-16 16:44:28 +02:00
Mamadou Babaei 0a950132b3 fix the windows cmd.exe issues with rename/copy and always use move when invoking the pack target 2024-08-16 16:44:28 +02:00
Mamadou Babaei d1ac264b98 remove the changelog.md file from filterplugin list and list the pdf and html documentation files 2024-08-16 16:44:28 +02:00
Mamadou Babaei 3ae36f4924 minor fixes 2024-08-16 16:44:28 +02:00
Mamadou Babaei 82214ee448 document for dependencies 2024-08-16 16:44:28 +02:00
Mamadou Babaei d910c17422 mention the purpose of make pack in the handbook readme file 2024-08-16 16:44:28 +02:00
Mamadou Babaei 69478003e3 add make pack target to the handbook makefile 2024-08-16 16:44:28 +02:00
Mamadou Babaei 5736076af7 try to fix rsync error on windows: error in rsync protocol data stream (code 12) 2024-08-16 16:44:28 +02:00
Mamadou Babaei afe3b59ced fix the windows rsync/git bash issue: the source and destination cannot both be remote 2024-08-16 16:44:28 +02:00
Mamadou Babaei 803cd87184 add a deployment note in regards to sourcing the deployment configurations on windows + git bash setups 2024-08-16 16:44:28 +02:00
Mamadou Babaei 46e09d45a2 introduce #sg-handbook-revision-url and #sg-handbook-revision-url + other preprocessor improvements 2024-08-16 16:44:27 +02:00
Mamadou Babaei ae162babf4 add the initial implementation for the deploy target 2024-08-16 16:44:27 +02:00
Mamadou Babaei e2314a1356 revamp the handbook make targets 2024-08-16 16:44:27 +02:00
Mamadou Babaei 28815f1a92 fix the broken pdf toc generation on linux 2024-08-16 16:44:27 +02:00
Mamadou Babaei 8ed1746a09 replace all bitfield uproperties with booleans 2024-08-16 16:44:27 +02:00
Mamadou Babaei 6ea5171c28 adjust the exclusion list to the latest repo structure overhaul 2024-08-16 16:44:27 +02:00
Mamadou Babaei ceb292a489 merge the pack branch into the plugin's source and add the sgum-packager v0.3.0 utility for automatic packaging and deployment to epic marketplace 2024-08-16 16:44:27 +02:00
Mamadou Babaei 0a726b7e8b winpython fixes and fix pdf-outline generation on gentoo using a temporary python env 2024-08-16 16:44:27 +02:00
Mamadou Babaei 13dd3c8e18 minor fixes and clean up 2024-08-16 16:44:26 +02:00
Mamadou Babaei 20bcd6396a replace inline code blocks with back tilde 2024-08-16 16:44:26 +02:00
Mamadou Babaei 52d6a613e4 complete advanced-topics/openxr/consuming-fxrmotioncontrollerdata/cpp tutorial 2024-08-16 16:44:26 +02:00
Mamadou Babaei 08903f0d17 set the default value of bValidateIfDefaultClassesAreSGCompliant to false 2024-08-16 16:44:26 +02:00
Mamadou Babaei 7f46c67eda crop the image edge 2024-08-16 16:44:26 +02:00
Mamadou Babaei 5a59065c02 add winpython and enable pdf-outline 2024-08-16 16:44:26 +02:00
Mamadou Babaei 31802a35f2 complete advanced-topics/openxr/consuming-fxrmotioncontrollerdata/blueprint tutorial 2024-08-16 16:44:25 +02:00
Mamadou Babaei 7660388dae fix a bug where tracking status not being set when the hand data is valid 2024-08-16 16:44:25 +02:00
Mamadou Babaei 47b4221fd6 specify the browser binary path from the gnu-make file 2024-08-16 16:44:25 +02:00
Mamadou Babaei 05bc8a34d6 formatting fix 2024-08-16 16:44:25 +02:00
Mamadou Babaei 10f650bfff add partial content to Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/blueprint.md 2024-08-16 16:44:25 +02:00
Mamadou Babaei 00cbccf7ba minor fix 2024-08-16 16:44:25 +02:00
Mamadou Babaei 627bc6886e add links to the ue source code from github 2024-08-16 16:44:25 +02:00
Mamadou Babaei 29ccab3e52 add the blueprint title line 2024-08-16 16:44:25 +02:00
Mamadou Babaei 0294ff987b minor fix 2024-08-16 16:44:25 +02:00
Mamadou Babaei d27de2314d minor fix 2024-08-16 16:44:25 +02:00
Mamadou Babaei ea770c77bb mention the pdf format as well 2024-08-16 16:44:25 +02:00
Mamadou Babaei c39e25773d add mdbook-pdf support which is able to print pdfs using chromedevtools protocol retaining images 2024-08-16 16:44:25 +02:00
Mamadou Babaei e9a2b4f238 remove cargo installs for typst-cli, mdbook-typst, and mdbook-epub 2024-08-16 16:44:24 +02:00
Mamadou Babaei 115d91848d move the /assets/* content to their relative folders as it creates printing issues 2024-08-16 16:44:24 +02:00
Mamadou Babaei 1091183e94 add the content for the Consuming FXRMotionControllerData section 2024-08-16 16:44:24 +02:00
Mamadou Babaei 798927f0a8 replace c++ standard int type definitions with the ones from unreal 2024-08-16 16:44:24 +02:00
Mamadou Babaei 14f56c3a97 remove the pdf and epub backend due to build errors and inability to show markdown images 2024-08-16 16:44:24 +02:00
Mamadou Babaei a0d731e036 consider the value of site-url when verifying the handbook revision and simplify the makefile code to do so as well 2024-08-16 16:44:24 +02:00
Mamadou Babaei 8de4dd1557 make the default site-url next 2024-08-16 16:44:24 +02:00
Mamadou Babaei 78fbb95c10 mention the pdf and epub formats as well and rename the pdf output filename 2024-08-16 16:44:24 +02:00
Mamadou Babaei f14639dddc rename a page 2024-08-16 16:44:24 +02:00
Mamadou Babaei a538f840fa switch to typst-cli from crates.io instead of git 2024-08-16 16:44:24 +02:00
Mamadou Babaei 47fbe92dbe bump senseglove libraries to v2.104.1-55fddbd2 2024-08-16 16:44:22 +02:00
Mamadou Babaei 1fb2f26217 fix the inro notice 2024-08-16 16:43:25 +02:00
Mamadou Babaei 2e3c2c0af7 fix a table column header 2024-08-16 16:43:25 +02:00
Mamadou Babaei 6730398b0f remove edit-url-template from the book.toml file 2024-08-16 16:43:25 +02:00
Mamadou Babaei f413334d9b minor fix 2024-08-16 16:43:25 +02:00
Mamadou Babaei cae2267812 remove mdbook-lintcheck 2024-08-16 16:43:25 +02:00
Mamadou Babaei 31f138f982 add github flavored markdown alerts to the handbook 2024-08-16 16:43:25 +02:00
Mamadou Babaei 1b034df2bd add experimental mdbook plugins for epub and pdf generation 2024-08-16 16:43:25 +02:00
Mamadou Babaei 6220aa2b12 fix the mdbook errors 2024-08-16 16:43:25 +02:00
Mamadou Babaei 12263f0133 add more change logs 2024-08-16 16:43:25 +02:00
Mamadou Babaei c0e517ec35 add more change logs 2024-08-16 16:43:25 +02:00
Mamadou Babaei 73e947d8c3 update the changelog with many of the recent changes 2024-08-16 16:43:25 +02:00
Mamadou Babaei 95368c9640 minor changelog fix 2024-08-16 16:43:25 +02:00
Mamadou Babaei 1d59115d92 add FSGDebugCube 2024-08-16 16:43:25 +02:00
Mamadou Babaei f852ede634 reorganize the handbook structure and add new sections 2024-08-16 16:43:24 +02:00
Mamadou Babaei e82aed2625 rename SGGameUserSettingSettings to SGGameUserSettingsSettings 2024-08-16 16:43:24 +02:00
Mamadou Babaei 641ae2897c rename SGHardwareBenchmarkSettings to SGHardwareBenchmarkingSettings 2024-08-16 16:43:24 +02:00
Mamadou Babaei ef5cbb40ea apply the plugin settings when the user overrides the settings for the first time 2024-08-16 16:43:24 +02:00
Mamadou Babaei d57963db27 do not ensure as it's possible to get a nullpointer during component uninitialization 2024-08-16 16:42:45 +02:00
Mamadou Babaei dbc2a7ea08 re-implement the virtual hand settings overrides; and apply plenty of other improvements and bug fixes to the settings system; and introduce sgdebugcubesettings 2024-08-16 16:42:18 +02:00
Mamadou Babaei 8b1b1c6a96 rename verify-build-type target to verify-handbook-revision 2024-08-16 16:37:28 +02:00
Mamadou Babaei c805b310ba rename verify-build-type target to verify-build-revision 2024-08-16 16:37:28 +02:00
Mamadou Babaei 93e42cdba9 remove the motion source wrist tracking overrides from the wrist tracker component due to the fact that it's utilized only inside the underlying tracking module and overriding it has no effects 2024-08-16 16:37:28 +02:00
Mamadou Babaei 740660fac4 re-implement the wrist tracking settings overrides 2024-08-16 16:37:28 +02:00
Mamadou Babaei ac1af0512c rename bInIsVisibleWhenHandDataUnavailable to bInVisibleWhenHandDataUnavailable 2024-08-16 16:37:28 +02:00
Mamadou Babaei 580fc4200a apply some sgxrtracker enum parsing improvements 2024-08-16 16:37:28 +02:00
Mamadou Babaei 76d67927f8 rename bIsVirtualHandVisible to bVirtualHandVisible 2024-08-16 16:37:28 +02:00
Mamadou Babaei 15e3aa25b8 delete the engine utils default constructor and destructor 2024-08-16 16:37:28 +02:00
Mamadou Babaei 2e4fa23fa3 add the editor utils class 2024-08-16 16:37:27 +02:00
Mamadou Babaei 1fd9299fbd fix the debug virtual hand settings and logic 2024-08-16 16:37:27 +02:00
Mamadou Babaei 378b9d60de fix a comment 2024-08-16 16:37:27 +02:00
Mamadou Babaei f05c11b8a7 introduce the senseglove unreal engine handbook 2024-08-16 16:37:27 +02:00
Mamadou Babaei a3c7ab41b8 a const correctness fix 2024-08-16 16:37:27 +02:00
Mamadou Babaei 3e35a655b1 make FSGXRTracker::GetMotionControllerData() behave the same as 5.4 on both 5.2 and 5.3 2024-08-16 16:37:27 +02:00
Mamadou Babaei b886b5952b minor fix 2024-08-16 16:37:27 +02:00
Mamadou Babaei 150155516c update the changelog and clarify what happens when other openxr hand tracking provider's are enabled and the possible workarounds 2024-08-16 16:37:27 +02:00
Mamadou Babaei 2132e70648 workaround the runuat 5.2/5.3 build issue due to missing IOpenXRHMD.h from epic public headers 2024-08-16 16:37:27 +02:00
Mamadou Babaei a876c08ff6 fix various runuat buiild issues 2024-08-16 16:37:27 +02:00
Mamadou Babaei 131658c734 break a circular dependency 2024-08-16 16:37:27 +02:00
Mamadou Babaei 7131e182c3 do not reigger OnGrabStateUpdated and OnTouchStateUpdated at all when the hand mesh is not valid or visible and also some other extra measures to make sure even if they are triggered they won't affect anything 2024-08-16 16:37:27 +02:00
Mamadou Babaei d49c80e470 take into account the device visual type when updating the hand visibility 2024-08-16 16:37:27 +02:00
Mamadou Babaei c5212c287e clarify the meta xr and vive openxr plugins incompatibility 2024-08-16 16:37:27 +02:00
Mamadou Babaei 5e9dfef55e rename variable 2024-08-16 16:37:27 +02:00
Mamadou Babaei 8cfeb76a2f seprate the engine and senseglove module dependency lists 2024-08-16 16:37:27 +02:00
Mamadou Babaei 342fa15b9f implement our own GetMotionControllerData instead of using the one from the XRTrackingSystem as it only picks up the first hand tracking plugin in order to make sure at least internally we use the hand-tracking data from senseglove 2024-08-16 16:37:27 +02:00
Mamadou Babaei f41eb22a33 minor fixes 2024-08-16 16:37:27 +02:00
Mamadou Babaei 912a2f935a mark the SenseGlove settings as DefaultConfig 2024-08-16 16:37:27 +02:00
Mamadou Babaei a554e11d31 add more bluetooth permissions to be able to request access for nearby devices on android api level 32 in addition to 29 2024-08-16 16:37:26 +02:00
Mamadou Babaei 972aa70bf2 add the gradle deprecation warnings 2024-08-16 16:37:26 +02:00
Mamadou Babaei 35597ef3c8 never extend the content browser context menu if any skeletal mesh or skeltons selected at the same time 2024-08-16 16:37:26 +02:00
Mamadou Babaei 75aa84a674 clean up and remove the redundant asset type actions no longer required by the senseglove sockets editor 2024-08-16 16:37:26 +02:00
Mamadou Babaei 506999f690 implement the SenseGlove grab/touch sockets one-click-setup ability on any Epic-compliant virtual hand mesh from within the Unreal Editor's Content Browser, Skeleton Editor, or Skeletal Mesh Editor 2024-08-16 16:37:26 +02:00
Mamadou Babaei b33d7a364d update the implemented features list 2024-08-16 16:37:26 +02:00
Mamadou Babaei ae2207e34c revamp the whole settings system in order to unify the settings across various systems, modules, and api layers 2024-08-16 16:37:26 +02:00
Mamadou Babaei 5bdffb5438 make the virtual hand anim instance proxy safer 2024-08-16 16:37:26 +02:00
Mamadou Babaei 8ae2bc686e minor fix: get object by reference 2024-08-16 16:37:26 +02:00
Mamadou Babaei ebb0c76f67 add the DebugVirtualHandSettings to the Debugging category 2024-08-16 16:37:26 +02:00
Mamadou Babaei f8bec10622 rename SGVirtualHandTrackingSettings to SGVirtualHandSettings 2024-08-16 16:37:26 +02:00
Mamadou Babaei 26daeae7d2 remove the deperecated jcenter repository from the android upl file 2024-08-16 16:37:26 +02:00
Mamadou Babaei 30bdee989d mark the x86 and armeabi-v7a platforms as unsupported inside the android upl file 2024-08-16 16:37:26 +02:00
Mamadou Babaei 8c1c282df5 fix a critical Android crash that happens where the default development hand meshes could not be found 2024-08-16 16:37:26 +02:00
Mamadou Babaei 1b39f7b3d5 remove the hardcoded SG_HAND_MESH_YAW_CORRECTION_OFFSET and rely on FVirtualHandTrackingSettings::RootBoneRotationCorrection 2024-08-16 16:37:26 +02:00
Mamadou Babaei df628d74ed update the changelog 2024-08-16 16:37:26 +02:00
Mamadou Babaei acd04c9593 mention the wrist tracking hardware visualization bug as a known issue with the new openxr system 2024-08-16 16:37:26 +02:00
Mamadou Babaei e6887145a7 fix runuat build issues for ue 5.4 caused by missing headers 2024-08-16 16:37:26 +02:00
Mamadou Babaei 1df2718312 remove redundant header files 2024-08-16 16:37:26 +02:00
Mamadou Babaei 4bd11ac05f fix more runuat issues due to missing headers 2024-08-16 16:37:26 +02:00
Mamadou Babaei d8308fa260 fix runuat build issues for ue 5.2 2024-08-16 16:37:25 +02:00
Mamadou Babaei db287f0137 fix a crash when the wrist-tracker hardware set to auto-detection 2024-08-16 16:37:25 +02:00
Mamadou Babaei 5f524068b9 fix a few build issues 2024-08-16 16:37:25 +02:00
Mamadou Babaei 404d730c18 fix the wrong kismet library class name 2024-08-16 16:37:25 +02:00
Mamadou Babaei 56bea631e2 formatting fix 2024-08-16 16:37:25 +02:00
Mamadou Babaei 49e643e86e update the changelog 2024-08-16 16:37:25 +02:00
Mamadou Babaei 1e4005e3ae whitespace fix 2024-08-16 16:37:25 +02:00
Mamadou Babaei 1468b3b93f add missing header that contains engine version definitions 2024-08-16 16:37:25 +02:00
Mamadou Babaei d6c05603c2 drop the minimal api specifier 2024-08-16 16:37:25 +02:00
Mamadou Babaei 3f124e4938 remove redundant headers 2024-08-16 16:37:25 +02:00
Mamadou Babaei 308d558bc1 remove unnecessary initialization 2024-08-16 16:37:25 +02:00
Mamadou Babaei c9e74743da whitespace fix 2024-08-16 16:37:25 +02:00
Mamadou Babaei 94b37dc4eb fix wrong kismet script names and class exports 2024-08-16 16:37:25 +02:00
Mamadou Babaei b69a95eb58 remove the experimental bHandTrackingVisualizationAllowed feature 2024-08-16 16:37:25 +02:00
Mamadou Babaei 0fae4bbb43 remove SetWristTrackingSettings from the FSGWristTrackerComponent's header file since it does not have any implementation 2024-08-16 16:37:25 +02:00
Mamadou Babaei 07ce39f439 perform a ensure before dereferencing 2024-08-16 16:37:25 +02:00
Mamadou Babaei 2fbf6355ec formatting fix 2024-08-16 16:37:25 +02:00
Mamadou Babaei bc7175bd4f revamp the GetControllerOrientationAndPosition and GetWristTransform to use the same caluclations and get rid of bMotionSourceHandTracking in senseglove joint calculations 2024-08-16 16:37:25 +02:00
Mamadou Babaei 922ba92ed1 check if motioncontrollerdata is valid 2024-08-16 16:37:25 +02:00
Mamadou Babaei ab867121e5 remove the ability to override wrist tracking settings from the wrist tracker component 2024-08-16 16:37:24 +02:00
Mamadou Babaei 003d3f9b26 fix the how we determine the motion source inside the GetControllerOrientationAndPosition and GetControllerTrackingStatus for ue versions earlier than 5.3 2024-08-16 16:37:24 +02:00
Mamadou Babaei f9fb5c61ca add htc vive stand-alone support status to the platform support matrix 2024-08-16 16:37:24 +02:00
Mamadou Babaei 39fa2c476a fix ue 5.2 and 5.3 build issues 2024-08-16 16:37:24 +02:00
Mamadou Babaei 6426f6bca5 update the changelog and the readme 2024-08-16 16:37:24 +02:00
Mamadou Babaei 0405a5b6ad update the changelog 2024-08-16 16:37:24 +02:00
Mamadou Babaei 87359728a8 add the editor user interface for adding the senseglove sockets 2024-08-16 16:37:24 +02:00
Mamadou Babaei e1a6f5c3eb temporarility change the way we calculate the wrist offset 2024-08-16 16:37:24 +02:00
Mamadou Babaei 3666dc4660 remove SGWristTrackerVisualizationComponent 2024-08-16 16:37:24 +02:00
Mamadou Babaei c9aa422dd1 fix a few wrist tracker issues and introduce SGWristTrackerVisualizationComponent 2024-08-16 16:37:24 +02:00
Mamadou Babaei e14440a911 pass outer as the worldcontextobject to glovetracker::getinstance 2024-08-16 16:37:24 +02:00
Mamadou Babaei 7df307d838 make USGGloveTracker::GetInstance as flexible as possible 2024-08-16 16:37:24 +02:00
Mamadou Babaei 3594410478 simplify getworld implementation 2024-08-16 16:37:24 +02:00
Mamadou Babaei 2691f32492 migrate the static getworld to sgengineutils 2024-08-16 16:37:24 +02:00
Mamadou Babaei 77f6d9be90 safer in-editor getworld without the polluting logs 2024-08-16 16:37:24 +02:00
Mamadou Babaei ac51aaefe5 fix the you are not the main thread and the editor is currently in a play mode errors 2024-08-16 16:37:24 +02:00
Mamadou Babaei 3f5dce9438 fix the MarkRenderStateDirty data race condition by gathering as much as data only on the game thread 2024-08-16 16:37:24 +02:00
Mamadou Babaei b660af8938 introduce bValidateIfDefaultClassesAreSGCompliant 2024-08-16 16:37:24 +02:00
Mamadou Babaei a30b4f1b02 fix the blueprint category naming to adhere to the rest of the settings system 2024-08-16 16:37:24 +02:00
Mamadou Babaei 2cc9d616dd move hardware benchmarking settings to its own class 2024-08-16 16:37:24 +02:00
Mamadou Babaei 8af6bc689a disable bFallbackToHandTrackingIfNoGloveDetected by default 2024-08-16 16:37:23 +02:00
Mamadou Babaei 4a864e0c99 fix a bug where sgpawn hand's finger collider interact with the world when the hand is not mesh visible 2024-08-16 16:37:23 +02:00
Mamadou Babaei a79dd67dbf add the USGVirtualHandComponent::OnHandVisibilityChanged() event 2024-08-16 16:37:23 +02:00
Mamadou Babaei 9c727ce60e try to disable collision alltogether when the hand mesh is not visible 2024-08-16 16:37:23 +02:00
Mamadou Babaei 3c25a57964 update the changelog 2024-08-16 16:37:23 +02:00
Mamadou Babaei 9db7fd3463 improve the sgusersettings implementation by introducing custom enum item and more accuracy 2024-08-16 16:37:23 +02:00
Mamadou Babaei 9e6e1f564c implement the game user settings system 2024-08-16 16:37:23 +02:00
Mamadou Babaei 38495f0759 minor formatting fix 2024-08-16 16:37:23 +02:00
Mamadou Babaei 25f72442c4 minor formatting fix 2024-08-16 16:37:23 +02:00
Mamadou Babaei 3d82a3a8c3 add a partial workaround for a bug when the virtual hand inside the game is not visible but still have collisions with other objects inside the scene 2024-08-16 16:37:23 +02:00
Mamadou Babaei eaad77edff add IsAMetaQuestDevice() and IsAHtcViveDevice() methods 2024-08-16 16:37:23 +02:00
Mamadou Babaei d437455c97 fix vive pro detection issues by introducing additional device identifier 2024-08-16 16:37:23 +02:00
Mamadou Babaei a619203446 removed the allbreaker virtual hand model as it's no longer compatible with the openxr integration 2024-08-16 16:37:12 +02:00
Mamadou Babaei 7d4c169a56 fix android build issues 2024-08-16 16:35:06 +02:00
Mamadou Babaei 7d5c106186 update the changelog 2024-08-16 16:34:11 +02:00
Mamadou Babaei 67cb9e5445 remove minor ue 5.1 comments and hints 2024-08-16 16:34:11 +02:00
Mamadou Babaei daa0181540 update the changelog 2024-08-16 16:34:10 +02:00
Mamadou Babaei 52c713ed51 implement bHandTrackingVisualizationAllowed 2024-08-16 16:34:10 +02:00
Mamadou Babaei f2de0ef9de improve the wrist tracking code when using motion controllers 2024-08-16 16:34:10 +02:00
Mamadou Babaei 33f2213f1f refactor the sgxrtracker internals to use transforms as pimpl methods args instead of a combination of fvectors/fquats 2024-08-16 16:34:10 +02:00
Mamadou Babaei 50c39778d2 minor fixes, mostrly formatting 2024-08-16 16:34:10 +02:00
Mamadou Babaei c7897cc734 remove unused pimpl method 2024-08-16 16:34:10 +02:00
Mamadou Babaei 5946803891 remove dead code 2024-08-16 16:34:10 +02:00
Mamadou Babaei 2ba37dc56d even more optimal fxrmotioncontroller data calculations that considers mesh when outputting senseglove data 2024-08-16 16:34:10 +02:00
Mamadou Babaei bd385651c3 document more unreleased changes 2024-08-16 16:34:10 +02:00
Mamadou Babaei 2be26417c9 fix the wrong palm bone names on the allbreaker virtual hand models 2024-08-16 16:33:38 +02:00
Mamadou Babaei 44c2574a62 somewhat unfinished refactored sg bone calculations 2024-08-16 16:33:38 +02:00
Mamadou Babaei 68c3817227 increase the default finger distal phalanges length 2024-08-16 16:33:38 +02:00
Mamadou Babaei ae588ef02d add the senseglove debug kismet module 2024-08-16 16:33:38 +02:00
Mamadou Babaei 8b2bf3786b unfinished improvements based on the last commit 2024-08-16 16:33:38 +02:00
Mamadou Babaei b41546494e attempt at calculating a hand model and feeding it to get hand pose 2024-08-16 16:33:37 +02:00
Mamadou Babaei 9f97e963dd refactor the way we calculate the mesh bone reference transforms to read from the settings system instead of the hardcoded values 2024-08-16 16:33:37 +02:00
Mamadou Babaei 2b07512ee4 add the hard-coded hand defaulet reference bone transfomrs to the virtual hand settings 2024-08-16 16:32:51 +02:00
Mamadou Babaei 4aa76a952b openxr bugfixes and improvements + 1st attempt at calculating the fxrmotioncontrollerdata based off of the hand mesh 2024-08-16 16:32:39 +02:00
Mamadou Babaei a8119fca41 fix more UE 5.4 RunUAT build issues 2024-08-16 16:30:36 +02:00
Mamadou Babaei 84315e146f refactor the animation, wrist tracking, and hand interaction manipulation systems for FXRMotionControllerData compatibility 2024-08-16 16:29:36 +02:00
Mamadou Babaei dccf6ad013 update the readme 2024-08-16 16:29:36 +02:00
Mamadou Babaei 366996a7df implement the OpenXR-compatible hand tracking (XR_EXT_hand_tracking) support 2024-08-16 16:29:36 +02:00
Mamadou Babaei 2d3fa27cb0 rename sgheadmountdisplay to sgheadmounteddisplay 2024-08-16 16:29:36 +02:00
Mamadou Babaei 47bb12b6fe add extra null checks 2024-08-16 16:29:36 +02:00
Mamadou Babaei 26c2252d5b add vive xr elite hmd auto-detection checkes and other vive headset detection bug fixes and improvements 2024-08-16 16:29:36 +02:00
Mamadou Babaei 1d2857dcc1 remove ASGVirtualHandActor 2024-08-16 16:29:35 +02:00
Mamadou Babaei b0cb7b2528 make the sgsettings constructor private 2024-08-16 16:29:35 +02:00
Mamadou Babaei 6f08369551 bump senseglove libraries to v2.102.0-4a8bd81d and drop support for ue 5.1 and epic native toolchain v20 2024-08-16 16:28:33 +02:00
Mamadou Babaei 9b1bbb9657 remove debug logs from FSGHeadMountDisplay::GetDeviceType() 2024-08-16 16:26:30 +02:00
Mamadou Babaei 0cc5f0de09 check hmd auto-detection against various identifiers as the names returns from the engine is not reliable 2024-08-16 16:26:18 +02:00
Mamadou Babaei 07995f23e2 improve vive pro and vive focus 3 detection by utilizing optic resolution to distinguish them 2024-08-16 16:26:06 +02:00
Mamadou Babaei 27dddd1b03 implement hmd and wrist tracker hardware auto-detection fallback when it's not set explicitly 2024-08-16 16:22:42 +02:00
Mamadou Babaei 2dc4499984 bump the plugin version to v2.0.8 2024-07-15 22:22:21 +02:00
Mamadou Babaei e21d92a3ca fix a bug where the sgpawn right-hand grab colliders' default size is mistakenly set to the default value for the left-hand grab colliders at cdo initialization time 2024-07-15 22:15:23 +02:00
Mamadou Babaei 1db86d9778 bump the plugin version to v2.0.7 2024-05-29 12:47:33 +02:00
Mamadou Babaei 0de86b508a make the allbreaker assets compatible with ue 5.1+ again 2024-05-29 12:46:51 +02:00
Mamadou Babaei 65a96a462b bump the plugin version to v2.0.6 2024-05-29 11:40:07 +02:00
Mamadou Babaei 6b7c28c379 bump the plugin version to v2.0.5 2024-05-22 17:32:43 +02:00
Mamadou Babaei af0be8c1f7 fix the wrong palm bone names on the allbreaker virtual hand models 2024-05-22 17:31:58 +02:00
Mamadou Babaei 49a12f64a4 bump the plugin version to v2.0.4 2024-05-17 11:39:57 +02:00
Mamadou Babaei 76d03b1fe8 bump the plugin version to v2.0.3 2024-05-16 20:00:18 +02:00
Mamadou Babaei d8ae5923d5 fix v2.0.2 UE 5.4 RunUAT build issues that mostly caused by missing headers 2024-05-15 04:34:46 +02:00
Mamadou Babaei befb07470e improve target platform detection when building SenseGloveConnectImpl and SenseGloveCoreImpl modules and also distinguish x64 builds from arm64 on windows 2024-05-15 04:34:38 +02:00
Mamadou Babaei b467c679de fix: asking CppCompileEnvironment for a single Architecture, but it has multiple Architectures (arm64, x64) 2024-05-15 04:34:30 +02:00
Mamadou Babaei 9afbd8e54f bump the plugin version to v2.0.2 2024-04-25 12:56:05 +02:00
Mamadou Babaei 4e0d01c3de bump the plugin version to v2.0.1 2024-04-15 15:03:17 +02:00
Mamadou Babaei 8681f78c22 do not call FSGHandLayer::ResetCalibration on every backend initialization 2024-04-15 14:52:20 +02:00
Mamadou Babaei 84e8f46d35 only instantiate the connected glove once instead of recreating and destroying it every frame 2024-04-15 14:52:14 +02:00
Mamadou Babaei 3f0dd4a5b9 bump senseglove libraries to v2.102.0-35d4de3f 2024-04-15 14:52:05 +02:00
Mamadou Babaei d0970504ce fix the wrong header file description sections for the header files 2024-04-15 14:51:58 +02:00
Mamadou Babaei 0c73eccc16 update the changelog with the unreleased changes 2024-04-15 14:51:52 +02:00
Mamadou Babaei f3b9155955 update the outdated platform support matrix remarks 2024-03-23 17:23:03 +01:00
Mamadou Babaei 45da7baa95 add ue 5.4 to the list of supported engines through azure devops 2024-03-23 16:57:47 +01:00
Mamadou Babaei 4550fda587 bump the plugin version to v2.0.0 2024-03-22 21:29:17 +01:00
Mamadou Babaei 560b9e65d3 update the changelog 2024-03-22 21:29:17 +01:00
Mamadou Babaei 8c8236c33c add missing modules to the directory structure 2024-03-22 21:29:17 +01:00
Mamadou Babaei 034d10355a update the planned features status 2024-03-22 20:57:53 +01:00
Mamadou Babaei 8127051da7 fix other build issues with non-unity builds 2024-03-22 20:57:53 +01:00
Mamadou Babaei 802a6b6d0b add the missing string header that causes build issues in non-unity builds 2024-03-22 20:57:53 +01:00
Mamadou Babaei 494f87f4cb remove the platform dependant build hacks inside FSGArrayUtils::FromStdVector as msvc is not able to deduce TArray<T>::SizeType 2024-03-22 20:57:52 +01:00
Mamadou Babaei def46777fa bump the senseglove libraries to v2.101.12-62b1be11 2024-03-22 20:57:52 +01:00
Mamadou Babaei d0c24aeda5 fix android build issue inside FSGArrayUtils::FromStdVector introduced by 0cdc7e03ac 2024-03-22 20:57:52 +01:00
Mamadou Babaei c0c5722f07 Revert "try to init/uninit the backend module at the module start/shutdown"
This reverts commit c45bcaf618.
2024-03-22 20:57:52 +01:00
Mamadou Babaei 8159c03526 fix a build issue inside FSGArrayUtils::FromStdVector introduced by newer msvc updates due to stricter implicit uint64 to int32 conversions 2024-03-22 20:57:51 +01:00
Mamadou Babaei 49eb2f2788 bump the senseglove backend libraries to v2.101.11-2d6fe9ce 2024-03-22 20:57:51 +01:00
Mamadou Babaei e0ea29ca18 correct the module logs grammars 2024-03-22 20:57:49 +01:00
Mamadou Babaei 17f5db48c6 try to init/uninit the backend module at the module start/shutdown 2024-03-22 20:57:49 +01:00
Mamadou Babaei d9647fc1c6 allow the c++ compiler the opportunity to perform rvo/nrvo if applicable 2024-03-22 20:57:48 +01:00
Mamadou Babaei 3995d6e0d9 bump senseglove libraries to v2.101.10-7e515114 2024-03-22 20:57:48 +01:00
Mamadou Babaei fe3bd91807 update the changelog with added quest 3 controllers support 2024-03-22 20:57:47 +01:00
Mamadou Babaei 3150bb6a8a integrate the virtual hand mesh from allbreaker 2024-03-22 20:57:45 +01:00
Mamadou Babaei b2c62b34a5 remove redundant headers 2024-03-22 20:54:55 +01:00
Mamadou Babaei 69bf6161f8 expose as little as dependencies as possible 2024-03-22 20:54:54 +01:00
Mamadou Babaei 560cb73db7 correct the hand mesh yaw rotation inside the sgpawn after the squat/sgvect3d changes 2024-03-22 20:54:54 +01:00
Mamadou Babaei b1ed6fa325 replace SupportedTargetPlatforms with PlatformAllowList 2024-03-22 20:54:53 +01:00
Mamadou Babaei 4bc0b6e6d3 clean up unsed unreal version headers 2024-03-22 20:54:53 +01:00
Mamadou Babaei d7fc6dd211 declare the openxr plugin as a dependency 2024-03-22 20:54:53 +01:00
Mamadou Babaei 8580c4a235 utilize UXRDeviceVisualizationComponent to display meshes on UE 5.2 onwards 2024-03-22 20:54:53 +01:00
Mamadou Babaei b11c329974 fix the changelog errors 2024-03-22 20:54:53 +01:00
Mamadou Babaei c098cade8c remove a changelog that is not valid anymore 2024-03-22 20:54:53 +01:00
Mamadou Babaei cbc3bcd1bd bump the senseglove libraries to v2.101.9-8abfc26d 2024-03-22 20:54:53 +01:00
Mamadou Babaei cb1c473136 bump the plugin version to v1.9.8 2024-03-22 20:54:49 +01:00
Mamadou Babaei 8f7148dd61 apply a temporary workaround in order to ameliorate the hand animation after sgquat, sgvect3d fixes 2024-03-22 20:54:49 +01:00
Mamadou Babaei 242eb35d16 make bones rotations a private field 2024-03-22 20:54:49 +01:00
Mamadou Babaei 5b7e2d5d1e update the changelog 2024-03-22 20:54:49 +01:00
Mamadou Babaei 4fc721fa55 proper angle conversions for vectors 2024-03-22 20:54:49 +01:00
Mamadou Babaei f138ab2ceb proper sgvect3d and squat conversions to fvector and fquat 2024-03-22 20:54:49 +01:00
Mamadou Babaei 68cc271461 apply senseglove/unreal angle conversions in the gloves' api 2024-03-22 20:54:49 +01:00
Mamadou Babaei 0a5553987f fix a crash when calling one of the SGHandInterpolatorImpl constructors which happens due to unintialized pimpl object 2024-03-22 20:54:43 +01:00
Mamadou Babaei 4a8812943b update the changelog 2024-03-22 20:54:43 +01:00
Mamadou Babaei a10b1ff034 bump senseglove libraries to v2.101.8-a2a2075b which resolves the android writehaptics crash 2024-03-22 20:54:42 +01:00
Mamadou Babaei b34c06eb00 update the change log with unreleased changes 2024-03-22 20:54:42 +01:00
Mamadou Babaei 73a4c79741 bump senseglove libraries to v2.101.7-3580cd9f 2024-03-22 20:54:41 +01:00
Mamadou Babaei 0c8d4ef350 bump senseglove libraries to v2.101.5-f0aff76b 2024-03-22 20:54:41 +01:00
Mamadou Babaei 88b337f066 bump senseglove libraries to v2.101.4-6c860c42 with android fixes and fix a android crash 2024-03-22 20:54:35 +01:00
Mamadou Babaei 310a4b148e bump senseglove libraries to v2.101.3-e583f6de 2024-03-22 20:54:34 +01:00
Mamadou Babaei 0061ea9cb6 implement the api updates and bump the senseglove libraries to v2.101.2-2eb7439f 2024-03-22 20:54:34 +01:00
Mamadou Babaei e2da098132 force glove recalibration on backend initialize 2024-03-22 20:54:16 +01:00
Mamadou Babaei c243525c0c add as*glove/device casting methods that resolves the sgpawn vibrotactile issues 2024-03-22 20:54:16 +01:00
Mamadou Babaei 86e283e700 use device impl casts 2024-03-22 20:54:16 +01:00
Mamadou Babaei a26f1d9e42 list nova 2 gloves in the get devices from the device list 2024-03-22 20:54:16 +01:00
Mamadou Babaei beadba4544 another attempt at improving the glove casts 2024-03-22 20:54:16 +01:00
Mamadou Babaei 40f27c227f try an alternative approach for glove instances upcasting at the lower levels of the api 2024-03-22 20:54:16 +01:00
Mamadou Babaei 5bc20edc25 try to add a solution for glove type-casting in higher levels of the api 2024-03-22 20:54:16 +01:00
Mamadou Babaei 4af682b617 fix the send custom waveform signature on the hand layer 2024-03-22 20:54:16 +01:00
Mamadou Babaei 5dbeef8627 fix a bug inside the ESGHapticLocation enum conversions 2024-03-22 20:54:16 +01:00
Mamadou Babaei da7e51e208 bump senseglove libraries for v2.101.1-edc1163a 2024-03-22 20:54:15 +01:00
Mamadou Babaei d83251a57c implement the nova2 api updates and bump the senseglove libraries to v2.101.0-3e1693fb 2024-03-22 20:54:09 +01:00
Mamadou Babaei 695d4f01ba bump the plugin version to v1.9.8 2024-03-12 20:31:34 +01:00
Mamadou Babaei 54e4db3ef6 make bones rotations a private field 2024-03-12 20:31:33 +01:00
Mamadou Babaei 2e653c2a81 fix a crash inside the USGHandPose::FromHandAngles in higher levels of the api 2024-03-12 20:31:33 +01:00
Mamadou Babaei 189c0e50df drop the prefix for internal typedefs 2024-03-12 20:31:32 +01:00
Mamadou Babaei 6eaac124ce add some performance optimizations by utilizing MoveTemp in return statements 2024-03-12 20:31:32 +01:00
Mamadou Babaei 6a5f200ee8 fix a bug where the right hand mesh is always hidden inside the game no matter whether the right glove is connected or not 2024-03-12 20:31:31 +01:00
Mamadou Babaei 5254a94441 fix a wrong variable name 2024-03-12 20:31:31 +01:00
Mamadou Babaei b087debc41 only include the sgconnect header if the build platform is android 2024-03-12 20:31:30 +01:00
5321 changed files with 60745 additions and 33944 deletions
+10
View File
@@ -38,3 +38,13 @@ Resources/**/* filter=lfs diff=lfs merge=lfs -text
# LFS: everything under Source/ThirdParty/ # LFS: everything under Source/ThirdParty/
Source/ThirdParty/**/* filter=lfs diff=lfs merge=lfs -text Source/ThirdParty/**/* filter=lfs diff=lfs merge=lfs -text
# LFS: everything under Handbook/dist/
Handbook/dist/**/* filter=lfs diff=lfs merge=lfs -text
# Except
.gitignore filter= diff= merge= text
.gitattributes filter= diff= merge= text
# LFS: sgum-packager Linux and Windows binaries
Packager/sgum-packager filter=lfs diff=lfs merge=lfs -text
Packager/sgum-packager.exe filter=lfs diff=lfs merge=lfs -text
+8
View File
@@ -125,3 +125,11 @@ DerivedDataCache/*
# Do not ignore anything inside the ThirdParty directory at all # Do not ignore anything inside the ThirdParty directory at all
!Source/ThirdParty/**/* !Source/ThirdParty/**/*
# The Handbook
Documentation/
Handbook/book/
# sgum-packager
# Do not ignore the sgum-packager Windows binary
!Packager/sgum-packager.exe
-415
View File
@@ -1,415 +0,0 @@
# Changelog
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).
## [1.9.7] - 2024-02-18
This is a bugfix release with containing bugfixes backported from the next major release of the plugin as documented below.
### Fixed
- Fix various bugs inside the SGPlayerController which occur when the thumb and pinky fingers are simultaneously touching different SGTouchComponents, or only one of them is in touch with such a component. In this case pinky's buzz and force-feedback levels are determined from the SGTouchComponent that is in collision with the thumb instead of the one that is touched by the pinky. Or, the pinky could ignore the buzz and force-feedback level if the thumb is not in collision with an SGTouchComponent. Or, the pinky could have reacted with a buzz or force feedback while only the thumb is in contact with an SGTouchComponent.
- Fix the BuzzDuration UPROPERTY range in order not to get clamped at 100.0f and also use float values for ClampMin and UIMin specifiers instead of integer values.
## [1.9.6] - 2024-02-14
This is a bugfix release.
### Fixed
- Fix a few critical bugs inside the NovaGlove class where the higher levels of the API including constructors, Parse, and NewNovaGlove methods mistakenly instantiate a SenseGloveImpl class instead of a NovaGloveImpl class.
## [1.9.5] - 2024-02-09
This is a bugfix release.
### Fixed
- Fix a wrong type-casting inside SGDeviceModel::ParseFirmware where OutMainVersion and OutSubVersion arguments are getting passed to the lower levels of the API. This could potentially result in a segfault at the FFI boundary between lower and higher levels of the API.
## [1.9.4] - 2024-02-08
This is a bugfix release addressing mostly Blueprint API issues with ABI breaking changes inside the Blueprint layer, backported from the next major release of the plugin as documented below.
### Fixed
- Fix the Blueprint Parse function signature for the NovaGloveInfoKismetLibrary where the OutGloveInfo passed by the caller was never actually assigned as it was not getting passed by reference.
- Changelog formatting.
## [1.9.3] - 2024-02-03
This is a hotfix release addressing a few critical issues that might result in crashes or malfunctions for users of the low-level SenseGlove API, backported from the next major release of the plugin as documented below.
### Fixed
- Fix a potential memory corruption inside one of the SGBasicHandModel constructors where the StartPositions parameter gets passed as the StartRotations parameter to lower levels of the API.
- Fix a potential memory corruption inside one of the SGSenseGloveInfo constructors where the StartPositions parameter gets passed as the Functions parameter to lower levels of the API.
- Fix a potential memory corruption where inside the SGHapticGloveCalibrationSequence::GetCurrentInstruction method, the return statement of the function is getting assigned to the const parameter NextStepKey, thus the return statement of the function will always be empty as well.
- Fix a potential memory corruption where inside one of the overloads of the SGSenseGloveImpl::GetGlovePose method, the out parameter of the method is getting passed as the SensorData parameter to the lower levels of the API.
- Fix multiple Equals methods for a few classes such as SGInterpolationSet, SGNovaGloveHandProfile, SGNovaGloveInfo, SGSenseGloveHandProfile, SenseGloveInfo, SenseGlovePose, where the Equal method compares the current instance against itself instead of the other instance passed to as the parameter to the method.
- Removed a redundant code statement inside the SGNovaGloveImpl::GetSubFirmwareVersion method.
- Some minor const correctness fixes.
- Some other minor code fixes and improvements.
- Fix the wrong version numbers inside the paltform support matrix and the main .uplugin file.
- Minor changelog fixes.
- Bumped the copyright years.
## [1.9.2] - 2023-11-03
### Added
- Added a list of planned features and their completion status to the main README file.
### Fixed
- A bug where the released actor is going to be NULL whenever the OnActorReleased event fires.
## [1.9.1] - 2023-10-11
### Fixed
- Add the missing Unreal Engine C++ header to files that rely on the ENGINE\_\*\_VERSION macros in order to fix the Epic Store build failures on UE 5.3.
## [1.9.0] - 2023-10-10
### Changed
- The BlueprintImplementableEvent UFUNCTION specifier for the OnGrabStateUpdated, OnTouchStateUpdated, OnActorGrabbed, OnActorReleased, OnActorBeginTouch, and OnActorEndTouch events have been changed to BlueprintNativeEvent in order to allow them to be implemented from the child C++ classes as well. This won't break any existing Blueprint code that relies on the previous BlueprintImplementableEvent signature.
### Fixed
- Add a missing release note entry for the v1.8.0 release to the changelog file.
## [1.8.0] - 2023-10-10
### Added
- Introduced new SGPawn events: OnActorGrabbed, OnActorReleased, OnActorBeginTouch, and OnActorEndTouch.
- Exposed OnGrabStateUpdated, OnTouchStateUpdated, OnActorGrabbed, OnActorReleased, OnActorBeginTouch, and OnActorEndTouch events to Blueprint as BlueprintImplementableEvent.
### Fixed
- Fix a bug where the OnTouchStateUpdated event is mistakenly triggered instead of the OnGrabStateUpdated when the right thumb fingertip grab collider overlaps with a grabbable actor.
- Fix the DECLARE_EVENT macro signature for OnGrabStateUpdated and OnTouchStateUpdated events.
## [1.7.0] - 2023-09-14
### Added
- Introduce SGGameInstance, a customized SenseGlove game instance for future use.
- Added the new SenseGloveBackend and SenseGloveBackendKismet modules.
- Added SG_CPP20 C++ macro for C++20 detection, which is now default from UE 5.3 onwards.
- Added SG_CAPTURE_THIS C++ macro as a workaround for error C4855: implicit capture of 'this' via '[=]' is deprecated in /std:c++20 in order to build the same lambda captures without extra #ifdefs on all supported engine versions.
### Changed
- SenseGlove libraries have been updated to v2.12.0-19c9854.
- SGCoreImpl/SGPlatform has been moved to SGBuildHacks/SGPlatform.
### Fixed
- Proper initialization of the SenseGlove backend in order to fix a bug in certain situations where SGConnect::Init() gets called every frame.
- Some other minor fixes and improvements.
## [1.6.1] - 2023-08-14
### Fixed
- Fix Unreal Engine 5.0 build issues.
- Minor documentation fixes.
## [1.6.0] - 2023-08-14
### Added
- Added support for the upcoming Unreal Engine 5.3.
- Now, the hand's velocity is applied to grabbed actors after being released from the hand.
- Introduce the real hands to the SenseGlove module (SGPawn) API.
- Added separation of the virtual and real hand rendering.
### Fixed
- Fix the wrong default debug virtual hand gizmo colors when initialized using the default constructor.
- Some minor performance fixes and improvements.
### Changed
- SenseGlove libraries have been updated to v2.11.0-b775a05.
## [1.5.3] - 2023-07-19
This is a hotfix release mostly addressing Android Bluetooth performance issues.
### Fixed
- Minor changelog fixes.
### Changed
- SenseGlove libraries have been updated to v2.10.1-3b0e7c9.
## [1.5.2] - 2023-07-19
This is a hotfix release mostly addressing Android-related issues.
### Fixed
- Fix a build issue with Android shipping builds due to sgconnect.jar not getting copied automatically in the AFSProject which is compiled for shipping builds when AndroidFileServer (AFS) is enabled.
- Minor changelog fixes and some source code formatting fixes.
## [1.5.1] - 2023-07-13
This is a hotfix release addressing a few critical issues introduced by the recent changes.
### Fixed
- Fix a wrist tracker bug where left and right hands' wrist trackers are mistakenly tracking the opposite hand's motion source.
- Fix a bug where the right hand is not able to do grab or release.
## [1.5.0] - 2023-06-16
This release breaks ABI/API compatibility with the previous versions in some areas as documented below.
### Added
- Added HTC VIVE Focus 3 positional tracking hardware enum.
- Added support for the Meta Quest Pro, HTC VIVE, and HTC VIVE Focus 3 positional tracking hardware.
- Added two options to the wrist tracker settings (to the global plugin settings and the overrides in the wrist tracker component) in order to be able to specify a custom motion source for the left and right hands, so that it allows SteamVR-based trackers such as HTC VIVE or HTC VIVE Focus 3 to operate with the SGPawn.
### Fixed
- Fix a bug where SteamVR trackers such as HTC VIVE and HTC VIVE Focus 3's wrist orientation and location were not being tracked.
### Changed
- Fully refactored the top-level configurations in the settings system into USTRUCTs.
- SenseGlove libraries have been updated to v2.10.0-12133ac.
### Removed
- Dropped support for the Epic Native Toolchain v19, MSVC v141 (Visual Studio 2017), and thus Unreal Engine 4.27 as it has been marked as deprecated since v1.4.x.
- Removed any kind of support for Oculus Touch (Oculus Rift S and Oculus Quest 1) positional tracking hardware, thus the enum as well.
- Removed any kind of support for Pico Neo 2 positional tracking hardware, thus the enum as well.
- Removed any kind of support for Pico Neo 3 positional tracking hardware, thus the enum as well.
## [1.4.3] - 2023-06-01
This is a hotfix release addressing a critical Android crash.
### Fixed
- Fix a critical Android crash that happens where the default development hand meshes are not found, which means almost always since we don't ship any default virtual hand mesh at the moment.
- Minor changelog release formatting fix in order to stay consistent.
## [1.4.2] - 2023-06-01
This is a hotfix release addressing a few critical issues.
### Fixed
- Fix build issues with certain compilers when the Unreal Engine version is older than 5.2.
- Reintroduced the Virtual Hand and the Wrist Tracker debug gizmos which have temporarily been disabled due to a bug in the settings system.
- Some minor changelog fixes.
## [1.4.1] - 2023-05-29
This is a bugfix release with a focus on Android build issues.
### Fixed
- Fix an Android Gradle build issue that happens when the game's package name won't start with com.senseglove.*.
- Suppress a grade warning for non-arm64 architectures when the build target is Android.
### Removed
- Remove dead Gradle code from the Android module.
## [1.4.0] - 2023-05-19
This release breaks ABI/API compatibility with the previous versions.
### Added
- Added support for the stable release of Unreal Engine 5.2 (the preview release has been supported since v1.2.0).
- Added Linux AArch64 platform support.
- Added a new Grab component that can turn any actor into a grabbable object.
- Added a new Touch component that enables haptic feedback such as Buzz and Force-Feedback commands.
- Added an optional feature in order to automatically stop all haptics on the EndPlay event, wherever the virtual hand component is used. By default, it's enabled.
### Fixed
- Fix Blueprint signatures for USGVirtualHandComponentKismetLibrary and make all the Blueprint exposed functions static.
### Changed
- SenseGlove libraries have been updated to v2.7.1-965f90c with support for Linux AArch64.
- The Virtual Hand and the Wrist Tracker debug gizmos (the intended use is only for SenseGlove developers for really low-level stuff; thus won't affect the users of the plugin at all) have been disabled and will be ignored due to an esoteric bug in the settings systems which has been scheduled to be fixed in the future releases.
### Removed
- Removed the redundant SenseGloveCoreTypes module which causes all kinds of packaging issues with certain versions of the engine.
### Deprecated
- This is the last release to support Unreal Engine 4.27 and please keep in mind that the current release is not obtainable through the Unreal Engine Marketplace. The latest published version on the Marketplace for 4.27 is v1.3.1. Per Epic's Marketplace policy regarding Code Plugins, we are only able to distribute or update the SenseGlove plugin for the last 3 stable versions of Unreal Engine. As a result, we won't be able to publish updates or bug fixes for the older versions of the Engine except on rare occasions and only through our official repository on Microsoft Azure DevOps.
## [1.3.1] - 2023-04-28
### Fixed
- Fix RunUAT build issues caused by missing headers.
- Minor documentation fixes.
## [1.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 need 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.
## [1.2.1] - 2023-03-30
### Fixed
- Fix RunUAT build issues with Android.
## [1.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 thousand 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
- Initial support for the upcoming Unreal Engine 5.2.
- Add support for Android armeabi-v7a with neon, x86-64, and x86 builds in addition to arm64-v8a.
### Fixed
- Fix various Android build issues.
- Some minor fixes and improvements.
### Changed
- Bump SenseGlove libraries to v2.1.2-95ec6e7.
## [1.1.0] - 2023-02-03
### Added
- Whitelist Android as a target platform.
- Introduce Android support.
- Add third-party library SGConnect for Android v1.1.0.
### Fixed
- Fix Android build issues caused by the log module.
### Changed
- SGConnect and SGCore libraries have been updated to v2.1.1-0569c74.
### Removed
- Removed the enum utils class due to ANY_PACKAGE deprecation warnings in Unreal Engine 5.1.
- Support for older versions of the Engine (namely, 4.22, 4.23, 4.24, 4.25, and 4.26) has been dropped.
## [1.0.4] - 2022-12-02
This is a minor release focusing mostly on adherence to the Unreal Engine Marketplace Guidelines based on the feedback from Epic Games.
### Added
- Added support for MSVC 2017
### Changed
- Updated SenseGlove libraries (SGCore/SGConnect) to v2.0.4.
## [1.0.3] - 2022-11-29
This is a minor release focusing on adherence to the Unreal Engine Marketplace Guidelines based on the feedback from Epic Games.
### Changed
- Adjust Config/FilterPlugin.ini in order to conform to Epic's Market Place Guidelines.
## [1.0.2] - 2022-11-27
This is a minor release focusing on adherence to the Unreal Engine Marketplace Guidelines based on the feedback from Epic Games.
### Added
- Added the newly acquired Unreal Engine Market Place Offer ID to the .uplugin file.
- List the dotfiles inside the FilterPlugin.ini file as well.
- Add the copyright notice to the source files missing it.
- Add the SenseGlove SDK license to the third-party license file.
### Fixed
- Fix the readme typos and errors.
- Minor fixes in the changelog for previous releases.
## [1.0.1] - 2022-11-25
### Changed
- Exposed SenseGloveTypes as a public dependency in SenseGloveConnect and SenseGloveCore modules, so that the C++ users of the API don't need to explicitly add it as a dependency.
- Cleaned up the redundant headers/modules dependencies from SGCore headers.
### Fixed
- Fix RunUAT build issues prior to Epic Store submission.
## [1.0.0] - 2022-11-24
### Added
- Initial public release of the SenseGlove haptic API for Unreal Engine with support for Microsoft Windows and GNU/Linux.
+2 -1
View File
@@ -1,3 +1,4 @@
[FilterPlugin] [FilterPlugin]
/CHANGELOG.md
/Config/FilterPlugin.ini /Config/FilterPlugin.ini
/Documentation/the-senseglove-unreal-engine-handbook.pdf
/Documentation/the-senseglove-unreal-engine-handbook.zip
Binary file not shown.
+34
View File
@@ -0,0 +1,34 @@
#
# author: Mamadou Babaei <mamadou@senseglove.com>
#
# (The MIT License)
#
# Copyright (c) 2020 - 2024 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.
#
# pmake might add -J (private)
FLAGS=${.MAKEFLAGS:C/\-J ([0-9]+,?)+//W}
all: .DEFAULT
.DEFAULT:
@which gmake > /dev/null 2>&1 || \
(echo "BSD Make is not supported; The build requires GNU Make." && exit 1)
@gmake ${.FLAGS} ${.TARGETS}
+675
View File
@@ -0,0 +1,675 @@
#
# author: Mamadou Babaei <mamadou@senseglove.com>
#
# (The MIT License)
#
# Copyright (c) 2020 - 2024 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.
#
################################################################################
# Generic Settings
################################################################################
SG_PROJECT_NAME := The SenseGlove Unreal Engine Handbook
SG_PROJECT_GIT_REPOSITORY := https://dev.azure.com/SenseGlove/SenseGlove-Unreal/_git/SenseGlove-Unreal
SG_HANDBOOK_ESCAPED_NAME := $(shell echo $(SG_PROJECT_NAME) | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g')
SG_HANDBOOK_DIR := $(CURDIR)
SG_HANDBOOK_SRC_DIR := $(SG_HANDBOOK_DIR)/src
SG_HANDBOOK_TOML_FILE := $(realpath $(SG_HANDBOOK_DIR)/book.toml)
SG_HANDBOOK_CONFIG_HOME_DIR := SenseGlove/ue-handbook
SG_HANDBOOK_DEPLOY_CONFIG_FILENAME := deploy.conf
SG_HANDBOOK_DEPLOY_TEMP_DIR_NAME := unreal-docs-senseglove-com-deploy-XXXXXXXXXX
SG_HANDBOOK_FAVICON_FILE := $(SG_HANDBOOK_SRC_DIR)/favicon.svg
SG_DOT_GIT_DIR := $(realpath $(SG_HANDBOOK_DIR)/../.git)
SG_DOT_GIT_SHALLOW_FILE := $(SG_DOT_GIT_DIR)/shallow
SG_PLUGIN_DIR := $(realpath $(SG_HANDBOOK_DIR)/..)
SG_PLUGIN_RESOURCES_DIR := $(SG_PLUGIN_DIR)/Resources
SG_PLUGIN_FILE := $(SG_PLUGIN_DIR)/SenseGlove.uplugin
SG_DOCUMENTATION_URL := https://unreal.docs.senseglove.com
SG_DOCUMENTATION_DIR := $(SG_PLUGIN_DIR)/Documentation
SG_DOCUMENTATION_EPUB_DIR := $(SG_DOCUMENTATION_DIR)/epub
SG_DOCUMENTATION_HTML_DIR_NAME := html
SG_DOCUMENTATION_HTML_DIR := $(SG_DOCUMENTATION_DIR)/$(SG_DOCUMENTATION_HTML_DIR_NAME)
SG_DOCUMENTATION_PDF_DIR := $(SG_DOCUMENTATION_DIR)/pdf-outline
SG_DOCUMENTATION_PDF_FILE := $(SG_DOCUMENTATION_PDF_DIR)/output.pdf
SG_DOCUMENTATION_PACK_DIR_NAME := pack
SG_DOCUMENTATION_PACK_DIR := $(SG_DOCUMENTATION_DIR)/$(SG_DOCUMENTATION_PACK_DIR_NAME)
SG_HANDBOOK_PACKED_HTML_DIR := $(SG_DOCUMENTATION_PACK_DIR)/$(SG_HANDBOOK_ESCAPED_NAME)
SG_HANDBOOK_PACKED_HTML_FILE := $(SG_DOCUMENTATION_PACK_DIR)/$(SG_HANDBOOK_ESCAPED_NAME).zip
SG_HANDBOOK_PACKED_PDF_FILE := $(SG_DOCUMENTATION_PACK_DIR)/$(SG_HANDBOOK_ESCAPED_NAME).pdf
SG_BROWSER_BINARY_PATH_LINUX := /opt/brave.com/brave/brave
SG_BROWSER_BINARY_PATH_WINDOWS := C:\Program Files\BraveSoftware\Brave-Browser\Application\brave.exe
SG_RSYNC_BIN_PATH_WINDOWS := C:\Program Files\cwrsync\bin
SG_RSYNC_BINARY_PATH_WINDOWS := $(SG_RSYNC_BIN_PATH_WINDOWS)\rsync.exe
SG_RSYNC_SSH_BINARY_PATH_WINDOWS := $(SG_RSYNC_BIN_PATH_WINDOWS)\ssh.exe
################################################################################
# Platform Detection
################################################################################
SG_BUILD_ARCH_AMD64 := amd64
SG_BUILD_PLATFORM_LINUX := linux
SG_BUILD_PLATFORM_WINDOWS := windows
ifeq ($(OS),Windows_NT)
SG_BUILD_PLATFORM := $(SG_BUILD_PLATFORM_WINDOWS)
# Running a 32-bit (x86) Command Prompt sets PROCESSOR_ARCHITECTURE to x86,
# and instead defines PROCESSOR_ARCHITEW6432 for 64-bit Windows detection.
ifeq ($(PROCESSOR_ARCHITEW6432),AMD64)
SG_BUILD_ARCH := $(SG_BUILD_ARCH_AMD64)
else # ($(PROCESSOR_ARCHITEW6432),AMD64)
ifeq ($(PROCESSOR_ARCHITECTURE),AMD64)
SG_BUILD_ARCH := $(SG_BUILD_ARCH_AMD64)
endif # ($(PROCESSOR_ARCHITECTURE),AMD64)
endif # ($(PROCESSOR_ARCHITEW6432),AMD64)
else # ($(OS),Windows_NT)
SG_PLATFORM_UNAME := $(shell uname -s)
ifeq ($(SG_PLATFORM_UNAME),Linux)
SG_BUILD_PLATFORM := $(SG_BUILD_PLATFORM_LINUX)
SG_PLATFORM_UNAME_ARCH := $(shell uname -m)
endif # ($(SG_PLATFORM_UNAME),Linux)
ifeq ($(SG_PLATFORM_UNAME_ARCH),x86_64)
SG_BUILD_ARCH := $(SG_BUILD_ARCH_AMD64)
endif # ($(SG_PLATFORM_UNAME_ARCH),x86_64)
endif # ($(OS),Windows_NT)
################################################################################
# Target Settings - mdbook
################################################################################
SG_MDBOOK_HOST := "localhost"
SG_MDBOOK_PORT := "8000"
SG_MDBOOK_SRC_DIR := "${SG_HANDBOOK_DIR}/src"
SG_MDBOOK_DEST_DIR := "${SG_DOCUMENTATION_DIR}"
SG_MDBOOK_WATCHER := "poll"
SG_PLUGIN_CHANGELOG_FILE := $(SG_PLUGIN_DIR)/CHANGELOG.md
SG_PLUGIN_DIRECTORY_STRUCTURE_FILE := $(SG_PLUGIN_DIR)/DIRECTORY_STRUCTURE.md
SG_PLUGIN_LICENSE_FILE := $(SG_PLUGIN_DIR)/LICENSE.md
SG_PLUGIN_LICENSE_THIRD_PARTY_FILE := $(SG_PLUGIN_DIR)/LICENSE_THIRD_PARTY.md
SG_PLUGIN_PLANNED_FEATURES_COMPLETION_STATUS_FILE := $(SG_PLUGIN_DIR)/PLANNED_FEATURES_COMPLETION_STATUS.md
SG_PLUGIN_PLATFORM_SUPPORT_MATRIX_FILE := $(SG_PLUGIN_DIR)/PLATFORM_SUPPORT_MATRIX.md
################################################################################
# Version and Build Information
################################################################################
SG_GIT_TREE_STATE_CLEAN := clean
SG_GIT_TREE_STATE_DIRTY := dirty
SG_GIT_NO := no
SG_GIT_YES := yes
SG_RELEASE_BRANCH_PATTERN := ^[0-9]+\.[0-9]+$$
SG_GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD 2>/dev/null)
SG_GIT_TAG := $(shell git describe --tags --abbrev=0 2>/dev/null)
SG_GIT_COMMIT := $(shell git rev-parse --short HEAD 2>/dev/null)
SG_GIT_COMMIT_NUMS_SINCE_TAG := $(shell git rev-list --count HEAD ^`git describe --tags --abbrev=0 2>/dev/null` 2>/dev/null)
SG_GIT_TREE_STATE := $(shell test -n "`git status --porcelain 2>/dev/null`" && echo "$(SG_GIT_TREE_STATE_DIRTY)" || echo "$(SG_GIT_TREE_STATE_CLEAN)")
SG_GIT_IS_SHALLOW_CLONE := $(shell [ -d $(SG_DOT_GIT_DIR) ] && [ -f $(SG_DOT_GIT_SHALLOW_FILE) ] && echo "$(SG_GIT_YES)" || echo "$(SG_GIT_NO)")
SG_GIT_LATEST_REMOTE_TAG := $(shell git -c versionsort.suffix=- ls-remote --exit-code --refs --sort=version:refname --tags $(SG_PROJECT_GIT_REPOSITORY) '*.*.*' | tail -n 1 | sed 's/.*refs\/tags\///' 2>/dev/null)
SG_PLUGIN_VERSION := $(shell grep -o '"VersionName": "[^"]*"' ${SG_PLUGIN_FILE} | awk -F'"' '{print "v" $$4}')
ifeq ($(strip $(SG_GIT_COMMIT_NUMS_SINCE_TAG)),)
SG_GIT_COMMIT_NUMS_SINCE_TAG := 0
endif # ($(strip $(SG_GIT_COMMIT_NUMS_SINCE_TAG)),)
ifneq ($(strip $(SG_GIT_TAG)),)
SG_GIT_VERSION := $(SG_GIT_TAG)
endif # ($(strip $(SG_GIT_TAG)),)
ifeq ($(strip $(SG_GIT_VERSION)),)
ifeq ($(strip $(SG_GIT_IS_SHALLOW_CLONE)),$(SG_GIT_YES))
ifneq ($(strip $(SG_GIT_LATEST_REMOTE_TAG)),)
SG_GIT_VERSION := $(SG_GIT_LATEST_REMOTE_TAG)
endif # ($(strip $(SG_GIT_LATEST_REMOTE_TAG)),)
endif # ($(strip $(SG_GIT_IS_SHALLOW_CLONE)),$(SG_GIT_YES))
endif # ($(strip $(SG_GIT_VERSION)),)
SG_GIT_VERSION_MAJOR := $(shell echo $(SG_GIT_VERSION) | cut -d '.' -f 1 | tr -d -c 0-9)
ifeq ($(SG_GIT_VERSION_MAJOR),)
SG_GIT_VERSION_MAJOR := 0
endif # ($(SG_GIT_VERSION_MAJOR),)
SG_GIT_VERSION_MINOR := $(shell echo $(SG_GIT_VERSION) | cut -d '.' -f 2 | tr -d -c 0-9)
ifeq ($(SG_GIT_VERSION_MINOR),)
SG_GIT_VERSION_MINOR := 0
endif # ($(SG_GIT_VERSION_MINOR),)
SG_GIT_VERSION_PATCH := $(shell echo $(SG_GIT_VERSION) | cut -d '.' -f 3 | tr -d -c 0-9)
ifeq ($(SG_GIT_VERSION_PATCH),)
SG_GIT_VERSION_PATCH := 0
endif # ($(SG_GIT_VERSION_PATCH),)
SG_PLUGIN_VERSION_MAJOR := $(shell echo $(SG_PLUGIN_VERSION) | cut -d '.' -f 1 | tr -d -c 0-9)
ifeq ($(SG_PLUGIN_VERSION_MAJOR),)
SG_PLUGIN_VERSION_MAJOR := 0
endif
SG_PLUGIN_VERSION_MINOR := $(shell echo $(SG_PLUGIN_VERSION) | cut -d '.' -f 2 | tr -d -c 0-9)
ifeq ($(SG_PLUGIN_VERSION_MINOR),)
SG_PLUGIN_VERSION_MINOR := 0
endif # ($(SG_PLUGIN_VERSION_MINOR),)
SG_PLUGIN_VERSION_PATCH := $(shell echo $(SG_PLUGIN_VERSION) | cut -d '.' -f 3 | tr -d -c 0-9)
ifeq ($(SG_PLUGIN_VERSION_PATCH),)
SG_PLUGIN_VERSION_PATCH := 0
endif # ($(SG_PLUGIN_VERSION_PATCH),)
SG_BUILD_HOST := $(shell hostname)
SG_BUILD_TIME := $(shell date '+%a %b %d, %Y %H:%M %Z %z')
ifeq ($(strip $(SG_GIT_BRANCH)),dev)
ifeq ($(strip $(SG_GIT_TAG)),)
SG_HANDBOOK_REVISION := next
endif # ($(strip $(SG_GIT_TAG)),)
endif # ($(strip $(SG_GIT_BRANCH)),dev)
SG_IS_GIT_BRANCH_HEAD_OR_MASTER := $(or $(filter HEAD,$(strip $(SG_GIT_BRANCH))),$(filter master,$(strip $(SG_GIT_BRANCH))))
ifneq ($(SG_IS_GIT_BRANCH_HEAD_OR_MASTER),)
ifeq ($(strip $(SG_GIT_COMMIT_NUMS_SINCE_TAG)),0)
ifeq ($(strip $(SG_GIT_TREE_STATE)),$(SG_GIT_TREE_STATE_CLEAN))
ifeq ($(strip $(SG_GIT_VERSION)),$(strip $(SG_PLUGIN_VERSION)))
SG_HANDBOOK_REVISION := $(SG_PLUGIN_VERSION_MAJOR).$(SG_PLUGIN_VERSION_MINOR)
endif # ($(strip $(SG_GIT_VERSION)),$(strip $(SG_PLUGIN_VERSION)))
endif # ($(strip $(SG_GIT_TREE_STATE)),$(SG_GIT_TREE_STATE_CLEAN))
endif # ($(strip $(SG_GIT_COMMIT_NUMS_SINCE_TAG)),0)
endif # ($(SG_IS_GIT_BRANCH_HEAD_OR_MASTER),)
ifeq ($(strip $(SG_GIT_IS_SHALLOW_CLONE)),$(SG_GIT_YES))
SG_IS_GIT_BRANCH_RELEASE := $(shell echo $(SG_GIT_BRANCH) | grep -E '$(SG_RELEASE_BRANCH_PATTERN)' || echo "")
ifneq ($(SG_IS_GIT_BRANCH_RELEASE),)
ifeq ($(strip $(SG_GIT_VERSION)),$(strip $(SG_PLUGIN_VERSION)))
SG_HANDBOOK_REVISION := $(SG_PLUGIN_VERSION_MAJOR).$(SG_PLUGIN_VERSION_MINOR)
endif # ($(strip $(SG_GIT_VERSION)),$(strip $(SG_PLUGIN_VERSION)))
endif # ($(SG_IS_GIT_BRANCH_RELEASE),)
endif # ($(strip $(SG_GIT_IS_SHALLOW_CLONE)),$(SG_GIT_YES))
ifeq ($(strip $(SG_HANDBOOK_REVISION)),)
SG_HANDBOOK_REVISION := mismatched
endif # ($(strip $(SG_HANDBOOK_REVISION)),)
ifneq ($(strip $(SG_HANDBOOK_REVISION)),mismatched)
SG_MDBOOK_HTML_SITE_URL := $(SG_HANDBOOK_REVISION)
SG_HANDBOOK_REVISION_URL := $(SG_DOCUMENTATION_URL)/$(SG_HANDBOOK_REVISION)
SG_HANDBOOK_RELEASE_NAME := $(shell echo $(SG_PROJECT_NAME)-$(SG_HANDBOOK_REVISION) | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g')
SG_HANDBOOK_PDF_URL := $(SG_HANDBOOK_REVISION_URL)/$(SG_HANDBOOK_RELEASE_NAME).pdf
endif # ($(strip $(SG_HANDBOOK_REVISION)),mismatched)
################################################################################
# mdbook-pdf Configuration
################################################################################
ifneq ($(strip $(SG_HANDBOOK_REVISION)),mismatched)
SG_MDBOOK_HTML_SITE_URL := /$(SG_HANDBOOK_REVISION)/
endif # ($(strip $(SG_HANDBOOK_REVISION)),mismatched)
ifeq ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
SG_MDBOOK_PDF_BROWSER_BINARY_PATH := $(SG_BROWSER_BINARY_PATH_LINUX)
else ifeq ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_WINDOWS))
SG_MDBOOK_PDF_BROWSER_BINARY_PATH := $(SG_BROWSER_BINARY_PATH_WINDOWS)
else # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
$(error The target operating system is not supported!)
endif # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
ifeq ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
SG_LINUX_PYTHON_VENV_DIR := $(shell mktemp -d)/sg-ue-handbook-venv
SG_LINUX_PYTHON_VENV_BIN_DIR := $(SG_LINUX_PYTHON_VENV_DIR)/bin
export PATH := $(SG_LINUX_PYTHON_VENV_BIN_DIR):$(PATH)
export PWD := $(SG_LINUX_PYTHON_VENV_BIN_DIR)
export VIRTUAL_ENV := $(SG_LINUX_PYTHON_VENV_DIR)
else ifeq ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_WINDOWS))
SG_DIST_DIR := $(SG_HANDBOOK_DIR)/dist
SG_WINPYTHON_DIR := $(SG_DIST_DIR)/winpython
SG_WINPYTHON_BIN_DIR := $(SG_WINPYTHON_DIR)//python-3.12.4.amd64
SG_WINPYTHON_BIN_SCRIPTS_DIR := $(SG_WINPYTHON_BIN_DIR)/Scripts
SG_WINPYTHON_SCRIPTS_DIR := $(SG_WINPYTHON_DIR)/scripts
export PATH := $(SG_WINPYTHON_SCRIPTS_DIR);$(PATH)
export PATH := $(SG_WINPYTHON_BIN_SCRIPTS_DIR);$(PATH)
export PATH := $(SG_WINPYTHON_BIN_DIR);$(PATH)
export PATH := $(SG_RSYNC_BIN_PATH_WINDOWS);$(PATH)
else # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
$(error The target operating system is not supported!)
endif # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
################################################################################
# Deployment Configuration
################################################################################
ifeq ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
SG_HANDBOOK_DEPLOY_CONFIG_FILE := $(shell echo ~/.config/$(SG_HANDBOOK_CONFIG_HOME_DIR)/$(SG_HANDBOOK_DEPLOY_CONFIG_FILENAME))
else ifeq ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_WINDOWS))
SG_HANDBOOK_DEPLOY_CONFIG_FILE := $(shell cygpath -u $(LOCALAPPDATA)/$(SG_HANDBOOK_CONFIG_HOME_DIR)/$(SG_HANDBOOK_DEPLOY_CONFIG_FILENAME))
else # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
$(error The target operating system is not supported!)
endif # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
################################################################################
# Deployment Temporary Directory Setup
################################################################################
$(info Setting up a deployment temporary directory '$(SG_HANDBOOK_DEPLOY_TEMP_DIR_NAME)')
SG_HANDBOOK_DEPLOY_TEMP_DIR := $(shell mktemp -d -t $(SG_HANDBOOK_DEPLOY_TEMP_DIR_NAME))
$(info Temporary directory has been set up at '$(SG_HANDBOOK_DEPLOY_TEMP_DIR)')
SG_HANDBOOK_DEPLOY_GENERATED_PDF_FILE := $(SG_HANDBOOK_DEPLOY_TEMP_DIR)/$(SG_HANDBOOK_RELEASE_NAME).pdf
SG_HANDBOOK_DEPLOY_REVISION_LIST_FILE := $(SG_HANDBOOK_DEPLOY_TEMP_DIR)/revisions.txt
SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE := $(SG_HANDBOOK_DEPLOY_TEMP_DIR)/index.html
################################################################################
# Env Configuration Functions
################################################################################
define load_env
$(eval ENV_FILE := $(1))
@echo "Loading configuration file '$(ENV_FILE)'..."
$(eval include $(ENV_FILE))
$(eval export)
endef
################################################################################
# Make Targets - All
################################################################################
.PHONY: all
all: help
################################################################################
# Make Targets - Misc
################################################################################
.PHONY: help
help:
@echo ""
@echo "Available make targets:"
@echo ""
@echo " - make build"
@echo " - make clean"
@echo " - make deploy"
@echo " - make help"
@echo " - make info"
@echo " - make pack"
@echo " - make serve"
@echo ""
.PHONY: info
info:
@echo ""
@echo "$(SG_PROJECT_NAME) build information:"
@echo ""
@echo " - Handbook Revision : $(SG_HANDBOOK_REVISION)"
@echo " - Handbook Revision URL : $(SG_HANDBOOK_REVISION_URL)"
@echo " - Handbook PDF URL : $(SG_HANDBOOK_PDF_URL)"
@echo " - Git Branch : $(SG_GIT_BRANCH)"
@echo " - Git Tag : $(SG_GIT_TAG)"
@echo " - Git Commit : $(SG_GIT_COMMIT)"
@echo " - Git Commits Since Tag : $(SG_GIT_COMMIT_NUMS_SINCE_TAG)"
@echo " - Git Tree State : $(SG_GIT_TREE_STATE)"
@echo " - Git Is Shallow Clone : $(SG_GIT_IS_SHALLOW_CLONE)"
@echo " - Git Latest Remote Tag : $(SG_GIT_LATEST_REMOTE_TAG)"
@echo " - Git Version : $(SG_GIT_VERSION)"
@echo " - Git Version Major : $(SG_GIT_VERSION_MAJOR)"
@echo " - Git Version Minor : $(SG_GIT_VERSION_MINOR)"
@echo " - Git Version Patch : $(SG_GIT_VERSION_PATCH)"
@echo " - Plugin Version : $(SG_PLUGIN_VERSION)"
@echo " - Plugin Version Major : $(SG_PLUGIN_VERSION_MAJOR)"
@echo " - Plugin Version Minor : $(SG_PLUGIN_VERSION_MINOR)"
@echo " - Plugin Version Patch : $(SG_PLUGIN_VERSION_PATCH)"
@echo " - Build Host : $(SG_BUILD_HOST)"
@echo " - Build Time : $(SG_BUILD_TIME)"
@echo ""
.PHONY: clean
clean:
@echo "Cleaning up $(SG_PROJECT_NAME)..."
@rm -rf "$(SG_MDBOOK_DEST_DIR)"
@echo "$(SG_PROJECT_NAME) has been cleaned up successfully!"
.PHONY: install-build-deps
install-build-deps:
@echo "Installing build dependencies if they have not already been installed..."
@cargo install mdbook --vers "^0.4" --locked
@cargo install xq --vers "^0.4" --locked
@cargo install mdbook-alerts --vers "^0.6" --locked
@cargo install mdbook-pdf --vers "^0.1" --locked
ifeq ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
@echo "Installing mdbook-pdf-outline..."
@python -m venv $(VIRTUAL_ENV) \
&& . $(SG_LINUX_PYTHON_VENV_BIN_DIR)/activate \
&& pip install mdbook-pdf-outline 2>/dev/null
endif # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
################################################################################
# Make Targets - mdBook
################################################################################
.PHONY: prepare
prepare:
@echo "Preparing the handbook $(SG_HANDBOOK_DIR)..."
prepare: prepare-src
prepare: prepare-dest
.PHONY: prepare-dest
prepare-dest:
@echo "Preparing the handbook target dir $(SG_MDBOOK_DEST_DIR)..."
.PHONY: prepare-src
prepare-src:
@echo "Preparing the handbook source dir $(SG_MDBOOK_SRC_DIR)..."
.PHONY: verify-handbook-revision
verify-handbook-revision:
ifeq ($(SG_HANDBOOK_REVISION), next)
@echo "Building an unstable handbook for the next release..."
else # ($(SG_HANDBOOK_REVISION), next)
ifeq ($(SG_HANDBOOK_REVISION), mismatched)
@echo ""
@echo "Failed to verify the handbook build due to some discrepancies. Please verify the following:"
@echo ""
@echo "If you're building a release handbook:"
@echo " - You are either on a release tag, e.g. v2.1.0, or on the master branch."
@echo " - No commit has been made since the targeted tag."
@echo " - The Git tree state is clean."
@echo " - The Git version and plugin version match each other."
@echo ""
@echo "If you're building an unstable handbook for the next release:"
@echo " - You're building from the dev branch."
@echo " - The Git version value evaluates to empty."
@echo ""
@echo "If you're packaging the handbook:"
@echo " - You're on a release branch."
@echo " - You're shallow cloning."
@echo " - The remorte Git repository contains releae tags."
@echo ""
@exit 1
else # ($(SG_HANDBOOK_REVISION), mismatched)
@echo "Building a release handbook: $(SG_HANDBOOK_REVISION)..."
endif # ($(SG_HANDBOOK_REVISION), mismatched)
endif # ($(SG_HANDBOOK_REVISION), next)
.PHONY: serve
serve: info
serve: install-build-deps
serve: prepare
serve: _mdbook_serve
.PHONY: build
build: info
build: install-build-deps
build: prepare
build: verify-handbook-revision
build: _mdbook_build
.PHONY: pack
pack: info
pack: install-build-deps
pack: prepare
pack: verify-handbook-revision
pack: _mdbook_build
pack: _pack
.PHONY: deploy
deploy: info
deploy: install-build-deps
deploy: clean
deploy: prepare
deploy: verify-handbook-revision
deploy: _mdbook_build
deploy: _deploy
.PHONY: _mdbook_serve
_mdbook_serve:
@echo "Serving $(SG_HANDBOOK_DIR)..."
@env SG_PROJECT_NAME='$(SG_PROJECT_NAME)' \
SG_HANDBOOK_REVISION='$(SG_HANDBOOK_REVISION)' \
SG_HANDBOOK_REVISION_URL='$(SG_HANDBOOK_REVISION_URL)' \
SG_HANDBOOK_PDF_URL='$(SG_HANDBOOK_PDF_URL)' \
SG_GIT_BRANCH='$(SG_GIT_BRANCH)' \
SG_GIT_TAG='$(SG_GIT_TAG)' \
SG_GIT_COMMIT='$(SG_GIT_COMMIT)' \
SG_GIT_COMMIT_NUMS_SINCE_TAG='$(SG_GIT_COMMIT_NUMS_SINCE_TAG)' \
SG_GIT_TREE_STATE='$(SG_GIT_TREE_STATE)' \
SG_GIT_IS_SHALLOW_CLONE='$(SG_GIT_IS_SHALLOW_CLONE)' \
SG_GIT_LATEST_REMOTE_TAG='$(SG_GIT_LATEST_REMOTE_TAG)' \
SG_GIT_VERSION='$(SG_GIT_VERSION)' \
SG_GIT_VERSION_MAJOR='$(SG_GIT_VERSION_MAJOR)' \
SG_GIT_VERSION_MINOR='$(SG_GIT_VERSION_MINOR)' \
SG_GIT_VERSION_PATCH='$(SG_GIT_VERSION_PATCH)' \
SG_PLUGIN_VERSION='$(SG_PLUGIN_VERSION)' \
SG_PLUGIN_VERSION_MAJOR='$(SG_PLUGIN_VERSION_MAJOR)' \
SG_PLUGIN_VERSION_MINOR='$(SG_PLUGIN_VERSION_MINOR)' \
SG_PLUGIN_VERSION_PATCH='$(SG_PLUGIN_VERSION_PATCH)' \
SG_BUILD_HOST='$(SG_BUILD_HOST)' \
SG_BUILD_TIME='$(SG_BUILD_TIME)' \
MDBOOK_output__html__site_url='$(SG_MDBOOK_HTML_SITE_URL)' \
MDBOOK_output__pdf__browser_binary_path='$(SG_MDBOOK_PDF_BROWSER_BINARY_PATH)' \
mdbook serve \
-n $(SG_MDBOOK_HOST) \
-p $(SG_MDBOOK_PORT) \
--watcher $(SG_MDBOOK_WATCHER) \
--dest-dir $(SG_MDBOOK_DEST_DIR)
.PHONY: _mdbook_build
_mdbook_build:
@echo "Building $(SG_HANDBOOK_DIR)..."
@env SG_PROJECT_NAME='$(SG_PROJECT_NAME)' \
SG_HANDBOOK_REVISION='$(SG_HANDBOOK_REVISION)' \
SG_HANDBOOK_REVISION_URL='$(SG_HANDBOOK_REVISION_URL)' \
SG_HANDBOOK_PDF_URL='$(SG_HANDBOOK_PDF_URL)' \
SG_GIT_BRANCH='$(SG_GIT_BRANCH)' \
SG_GIT_TAG='$(SG_GIT_TAG)' \
SG_GIT_COMMIT='$(SG_GIT_COMMIT)' \
SG_GIT_COMMIT_NUMS_SINCE_TAG='$(SG_GIT_COMMIT_NUMS_SINCE_TAG)' \
SG_GIT_IS_SHALLOW_CLONE='$(SG_GIT_IS_SHALLOW_CLONE)' \
SG_GIT_LATEST_REMOTE_TAG='$(SG_GIT_LATEST_REMOTE_TAG)' \
SG_GIT_TREE_STATE='$(SG_GIT_TREE_STATE)' \
SG_GIT_VERSION='$(SG_GIT_VERSION)' \
SG_GIT_VERSION_MAJOR='$(SG_GIT_VERSION_MAJOR)' \
SG_GIT_VERSION_MINOR='$(SG_GIT_VERSION_MINOR)' \
SG_GIT_VERSION_PATCH='$(SG_GIT_VERSION_PATCH)' \
SG_PLUGIN_VERSION='$(SG_PLUGIN_VERSION)' \
SG_PLUGIN_VERSION_MAJOR='$(SG_PLUGIN_VERSION_MAJOR)' \
SG_PLUGIN_VERSION_MINOR='$(SG_PLUGIN_VERSION_MINOR)' \
SG_PLUGIN_VERSION_PATCH='$(SG_PLUGIN_VERSION_PATCH)' \
SG_BUILD_HOST='$(SG_BUILD_HOST)' \
SG_BUILD_TIME='$(SG_BUILD_TIME)' \
MDBOOK_output__html__site_url='$(SG_MDBOOK_HTML_SITE_URL)' \
MDBOOK_output__pdf__browser_binary_path='$(SG_MDBOOK_PDF_BROWSER_BINARY_PATH)' \
mdbook build \
--dest-dir $(SG_MDBOOK_DEST_DIR)
.PHONY: _pack
_pack:
@echo "Packing '$(SG_HANDBOOK_DIR)'..."
@echo "Cleaning up the pack directory '$(SG_DOCUMENTATION_PACK_DIR)'..."
@rm -rf "$(SG_DOCUMENTATION_PACK_DIR)"
@echo "Creating the pack directory '$(SG_DOCUMENTATION_PACK_DIR)'..."
@mkdir -p "$(SG_DOCUMENTATION_PACK_DIR)"
@echo "Moving '$(SG_DOCUMENTATION_HTML_DIR)' to '$(SG_HANDBOOK_PACKED_HTML_DIR)'..."
ifeq ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
@mv $(SG_DOCUMENTATION_HTML_DIR) $(SG_HANDBOOK_PACKED_HTML_DIR)
else # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
@powershell -Command "Move-Item '$(SG_DOCUMENTATION_HTML_DIR)' '$(SG_HANDBOOK_PACKED_HTML_DIR)'"
endif # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
@echo "Compressing '$(SG_HANDBOOK_PACKED_HTML_DIR)' to '$(SG_HANDBOOK_PACKED_HTML_FILE)'..."
ifeq ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
@cd $(SG_DOCUMENTATION_PACK_DIR) \
&& zip $(SG_HANDBOOK_PACKED_HTML_FILE) -r $(SG_HANDBOOK_ESCAPED_NAME)
else # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
@cd $(SG_DOCUMENTATION_PACK_DIR) \
&& powershell Compress-Archive $(SG_HANDBOOK_ESCAPED_NAME) $(SG_HANDBOOK_PACKED_HTML_FILE)
endif # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
@echo "Moving '$(SG_DOCUMENTATION_PDF_FILE)' to '$(SG_HANDBOOK_PACKED_PDF_FILE)'..."
ifeq ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
@mv $(SG_DOCUMENTATION_PDF_FILE) $(SG_HANDBOOK_PACKED_PDF_FILE)
else # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
@powershell -Command "Move-Item '$(SG_DOCUMENTATION_PDF_FILE)' '$(SG_HANDBOOK_PACKED_PDF_FILE)'"
endif # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
.PHONY: _deploy
_deploy:
@echo "Deploying '$(SG_HANDBOOK_DIR)'..."
@echo "Loading the Handbook deployment configuration file..."
@$(call load_env, $(SG_HANDBOOK_DEPLOY_CONFIG_FILE))
@echo "Deploying '$(SG_HANDBOOK_DIR)' to '$(SG_HANDBOOK_SSH_USER)@$(SG_HANDBOOK_SSH_HOST):$(SG_HANDBOOK_SSH_REMOTE_DIR)/$(SG_HANDBOOK_REVISION)'..."
ifeq ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
@rsync \
-avze "ssh -p $(SG_HANDBOOK_SSH_PORT)" \
--perms \
--chmod=u+rwx,g+rx,o+rx,g-w,o-wx \
--delete $(SG_DOCUMENTATION_HTML_DIR)/ \
$(SG_HANDBOOK_SSH_USER)@$(SG_HANDBOOK_SSH_HOST):$(SG_HANDBOOK_SSH_REMOTE_DIR)/$(SG_HANDBOOK_REVISION)
else # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
@cd $(SG_DOCUMENTATION_DIR) \
&& "$(SG_RSYNC_BINARY_PATH_WINDOWS)" \
-avze "\"$(SG_RSYNC_SSH_BINARY_PATH_WINDOWS)\" -p $(SG_HANDBOOK_SSH_PORT)" \
--perms \
--chmod=u+rwx,g+rx,o+rx,g-w,o-wx \
--delete $(SG_DOCUMENTATION_HTML_DIR_NAME)/ \
$(SG_HANDBOOK_SSH_USER)@$(SG_HANDBOOK_SSH_HOST):$(SG_HANDBOOK_SSH_REMOTE_DIR)/$(SG_HANDBOOK_REVISION)
endif # ($(SG_BUILD_PLATFORM),$(SG_BUILD_PLATFORM_LINUX))
@echo "Copying '$(SG_DOCUMENTATION_PDF_FILE)' to '$(SG_HANDBOOK_DEPLOY_GENERATED_PDF_FILE)'..."
@cp -v $(SG_DOCUMENTATION_PDF_FILE) $(SG_HANDBOOK_DEPLOY_GENERATED_PDF_FILE)
@echo "Uploading '$(SG_HANDBOOK_DEPLOY_GENERATED_PDF_FILE)' to '$(SG_HANDBOOK_SSH_USER)@$(SG_HANDBOOK_SSH_HOST):$(SG_HANDBOOK_SSH_REMOTE_DIR)/$(SG_HANDBOOK_REVISION)'..."
@scp \
-P $(SG_HANDBOOK_SSH_PORT) \
$(SG_HANDBOOK_DEPLOY_GENERATED_PDF_FILE) \
$(SG_HANDBOOK_SSH_USER)@$(SG_HANDBOOK_SSH_HOST):$(SG_HANDBOOK_SSH_REMOTE_DIR)/$(SG_HANDBOOK_REVISION)
@cp -v $(SG_DOCUMENTATION_PDF_FILE) $(SG_HANDBOOK_DEPLOY_GENERATED_PDF_FILE)
@echo "Retrieving the list of deployed handbook revisions from '$(SG_HANDBOOK_SSH_USER)@$(SG_HANDBOOK_SSH_HOST):$(SG_HANDBOOK_SSH_PORT)/$(SG_HANDBOOK_SSH_REMOTE_DIR)'..."
@ssh \
-p $(SG_HANDBOOK_SSH_PORT) $(SG_HANDBOOK_SSH_USER)@$(SG_HANDBOOK_SSH_HOST) \
"mkdir -p $(SG_HANDBOOK_SSH_REMOTE_DIR)"
@ssh \
-p $(SG_HANDBOOK_SSH_PORT) $(SG_HANDBOOK_SSH_USER)@$(SG_HANDBOOK_SSH_HOST) \
"find $(SG_HANDBOOK_SSH_REMOTE_DIR) -maxdepth 1 -type d ! -path $(SG_HANDBOOK_SSH_REMOTE_DIR) -exec basename {} \; | sort -r" \
> $(SG_HANDBOOK_DEPLOY_REVISION_LIST_FILE)
@{ \
grep -i 'next' $(SG_HANDBOOK_DEPLOY_REVISION_LIST_FILE); \
grep -vi 'next' $(SG_HANDBOOK_DEPLOY_REVISION_LIST_FILE) \
| sort -r; \
} > $(SG_HANDBOOK_DEPLOY_REVISION_LIST_FILE).tmp
@mv $(SG_HANDBOOK_DEPLOY_REVISION_LIST_FILE).tmp $(SG_HANDBOOK_DEPLOY_REVISION_LIST_FILE)
@echo "Revisions list saved to '$(SG_HANDBOOK_DEPLOY_REVISION_LIST_FILE)'!"
@echo "Current revisions:"
@sed 's/^/ - /' $(SG_HANDBOOK_DEPLOY_REVISION_LIST_FILE)
@echo "Generating '$(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)'..."
@echo "<html>" > $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "<head>" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "<title>Welcome to $(SG_PROJECT_NAME)</title>" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "<link rel='icon' href='favicon.svg'>" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "<link rel='shortcut icon' href='favicon.svg'>" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "<style>" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "body {" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "font-family: Arial, sans-serif;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "background-color: #003070;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "color: #fff;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "margin: 0;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "padding: 0;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "}" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo ".container {" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "padding: 2.0em;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "}" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo ".logo-container {" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "text-align: center;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "}" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo ".logo-container img {" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "max-width: 100%;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "height: auto;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "}" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo ".title-container {" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "text-align: center;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "}" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo ".revisions-container {" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "display: table;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "width: 300px;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "margin: 0 auto;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "padding: 20px;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "}" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo ".row {" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "display: table-row;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "}" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo ".cell {" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "display: table-cell;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "background-color: #004890;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "border-radius: 5px;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "margin: 10px;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "padding: 20px;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "text-align: center;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "transition: transform 0.2s;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "}" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo ".cell:hover {" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "transform: scale(1.05);" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "}" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo ".cell a {" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "display: block;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "height: 100%;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "width: 100%;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "text-decoration: none;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "color: #fff;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "font-weight: bold;" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "}" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "</style>" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "</head>" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "<body>" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "<div class='container'>" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "<div class='logo-container'>" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "<img src="favicon.svg" alt='SenseGlove' />" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "</div>" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "<div class='title-container'>" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "<h1>Welcome to the SenseGlove Unreal Engine Handbook</h1>" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "<h3>Please choose a revision to continue!</h3>" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "<h5>* Please note that the next revision is the documentation for the unstable next release of the plugin and subject to change!</h5>" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "</div>" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "<div class='revisions-container'>" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@while read dir; \
do \
echo "<div class='row'><div class='cell'><a href=\"$$dir\">$$dir</a></div></div>"; \
done < $(SG_HANDBOOK_DEPLOY_REVISION_LIST_FILE) >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "</div>" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "</div>" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "</body>" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "</html>" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)
@echo "Uploading '$(SG_HANDBOOK_FAVICON_FILE)' to '$(SG_HANDBOOK_SSH_USER)@$(SG_HANDBOOK_SSH_HOST):$(SG_HANDBOOK_SSH_REMOTE_DIR)'"
@scp \
-P $(SG_HANDBOOK_SSH_PORT) \
$(SG_HANDBOOK_FAVICON_FILE) \
$(SG_HANDBOOK_SSH_USER)@$(SG_HANDBOOK_SSH_HOST):$(SG_HANDBOOK_SSH_REMOTE_DIR)
@echo "Uploading '$(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE)' to '$(SG_HANDBOOK_SSH_USER)@$(SG_HANDBOOK_SSH_HOST):$(SG_HANDBOOK_SSH_REMOTE_DIR)'"
@scp \
-P $(SG_HANDBOOK_SSH_PORT) \
$(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) \
$(SG_HANDBOOK_SSH_USER)@$(SG_HANDBOOK_SSH_HOST):$(SG_HANDBOOK_SSH_REMOTE_DIR)
+91
View File
@@ -0,0 +1,91 @@
# The SenseGlove Unreal Engine Handbook
## Prerequisites
- Brave Browser (for PDF generation; in case you have Brave installed in a non-conventional path, or you'd like to use a different Chromium-based browser you need to adjust the path inside the GNUmakefile).
- cygpath (Windows only) provided by [Git for Windows](https://gitforwindows.org/).
- GNU Make.
- Git.
- PowerShell (Windows only) required only by the `pack` make target.
- Python3 along with venv and pip. For Windows, a version of [WinPython](https://winpython.github.io/) is already shipped with this repo, so it's not an external requirement.
- Rsync and OpenSSH ([cwRsync](https://itefix.net/cwrsync) provides these for Windows) required only by the `deploy` make target.
- The Rust Toolchain and the Cargo package manager.
- Other common Unix utilities such as `awk`, `cp`, `cut`, `date`, `find`, `grep`, `hostname`, `mkdir`, `mktemp`, `mv`, `scp`, `sed`, `ssh`, `sort`, `tr`, and `uname` provided by most distors. On Windows these are mostly provided by [Git for Windows](https://gitforwindows.org/).
- `zip` command (Linux only) required only by the `pack` make target.
### Microsoft Windows Prerequisites Installation Notes
- Download and install [Git for Windows](https://gitforwindows.org/).
- Download and install [the Rust Toolchain](https://rustup.rs/).
- Download [a without-guile binary build of GNU Make for Windows from ezwinports](https://sourceforge.net/projects/ezwinports/files/), e.g. <code>make-4.4.1-without-guile-w32-bin.zip</code>.
- <code>make-\*-without-guile-w32-bin.zip/*</code> contents should be extracted and copied to your <code>Git\\mingw64\\</code>, e.g. <code>C:\\Program Files\\Git\\mingw64\\</code>, merging the folders, WITHOUT overwriting/replacing any existing files.
- After Git Bash installation, the changes to environment variables require a reboot. In order for these changes to take effect reboot the system, then proceed to the build section.
- Download and install [cwRsync](https://itefix.net/cwrsync) which is only required for the `deploy` make target. In case you won't intend to use that, this could be skipped.
## How to preview, build, and deploy?
In order to generate the handbook, on either GNU/Linux and Microsoft Windows everything is done through running the <code>make</code> command. Simply entering the <code>make</code> or <code>make help</code> inside your desired terminal will show you all the available make targets:
```sh
$ make help
Available make targets:
- make build
- make clean
- make deploy
- make help
- make info
- make pack
- make serve
```
### make info
This target prints the build and version information.
### make clean
This target cleans up the output directory for the generated handbook, which is the <code>/Documentation</code> folder.
### make serve
This tatget could be used for viewing or live-previwing the handbook while editing simultaneously editing it. Simply run this tatget and leave your terminal open and inside your web browser of choice head to <code>http://localhost:8000/</code>. You can modify the handbook source code inside any text editor and upon saving your web browser will refresh in realtime once a change is detected.
### make build
This tatget builds the final handbook and outputs it to the <code>/Documentation</code> folder.
If you're building a release handbook, please make sure:
- You are either on a release tag, e.g. v2.1.0, or on the master branch.
- No commit has been made since the targeted tag.
- The Git tree state is clean.
- The Git version and plugin version match each other.
If you're building an unstable handbook for the next release, please make sure:
- You're building from the dev branch.
- The Git version value evaluates to empty.
### make deploy
This tatget is used to build and upload the final draft of the handbook. This tatget first runs the <code>clean</code> target and then the <code>build</code> target; and only then attempts to upload the content. Thus, any rule that applies to the <code>build</code> target, will apply to this target as well.
_Noete_: Building on Windows requires sourcing the deployment configuration file, otherwise the deployment will fail; e.g.:
```sh
$ source /c/Users/mamadou/AppData/Local/SenseGlove/ue-handbook/deploy.conf && make deploy
```
Also, on Windows you probably need to adjust the follwoing variables at the top of the `GNUmakefile`:
```make
SG_RSYNC_BIN_PATH_WINDOWS := C:\Program Files\cwrsync\bin
SG_RSYNC_BINARY_PATH_WINDOWS := $(SG_RSYNC_BIN_PATH_WINDOWS)\rsync.exe
SG_RSYNC_SSH_BINARY_PATH_WINDOWS := $(SG_RSYNC_BIN_PATH_WINDOWS)\ssh.exe
```
### make pack
This target is meant to be used by the `sgum-packager` utility located in the [Packager](../Packager) folder in order to deploy the documentation in various formats along with the plugin to [Fab](https://www.fab.com/).
+104
View File
@@ -0,0 +1,104 @@
#!/usr/bin/env sh
#
# author: Mamadou Babaei <mamadou@senseglove.com>
#
# (The MIT License)
#
# Copyright (c) 2020 - 2024 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.
#
if [ "$1" = "supports" ]
then
exit 0
fi
readonly JSON_INPUT=$(cat)
readonly CONTEXT=$(echo "${JSON_INPUT}" | xq '.[0]')
readonly BOOK=$(echo "${JSON_INPUT}" | xq '.[1]')
escape_string() {
printf '%s' "$1" | sed -e 's/\\/\\\\/g' -e 's/"/\\"/g'
}
SG_PROJECT_NAME_ESCAPED=$(escape_string "${SG_PROJECT_NAME}")
SG_HANDBOOK_REVISION_ESCAPED=$(escape_string "${SG_HANDBOOK_REVISION}")
SG_HANDBOOK_REVISION_URL_ESCAPED=$(escape_string "${SG_HANDBOOK_REVISION_URL}")
SG_HANDBOOK_PDF_URL_ESCAPED=$(escape_string "${SG_HANDBOOK_PDF_URL}")
SG_GIT_BRANCH_ESCAPED=$(escape_string "${SG_GIT_BRANCH}")
SG_GIT_TAG_ESCAPED=$(escape_string "${SG_GIT_TAG}")
SG_GIT_COMMIT_ESCAPED=$(escape_string "${SG_GIT_COMMIT}")
SG_GIT_COMMIT_NUMS_SINCE_TAG_ESCAPED=$(escape_string "${SG_GIT_COMMIT_NUMS_SINCE_TAG}")
SG_GIT_TREE_STATE_ESCAPED=$(escape_string "${SG_GIT_TREE_STATE}")
SG_GIT_IS_SHALLOW_CLONE_ESCAPED=$(escape_string "${SG_GIT_IS_SHALLOW_CLONE}")
SG_GIT_LATEST_REMOTE_TAG_ESCAPED=$(escape_string "${SG_GIT_LATEST_REMOTE_TAG}")
SG_GIT_VERSION_ESCAPED=$(escape_string "${SG_GIT_VERSION}")
SG_GIT_VERSION_MAJOR_ESCAPED=$(escape_string "${SG_GIT_VERSION_MAJOR}")
SG_GIT_VERSION_MINOR_ESCAPED=$(escape_string "${SG_GIT_VERSION_MINOR}")
SG_GIT_VERSION_PATCH_ESCAPED=$(escape_string "${SG_GIT_VERSION_PATCH}")
SG_PLUGIN_VERSION_ESCAPED=$(escape_string "${SG_PLUGIN_VERSION}")
SG_PLUGIN_VERSION_MAJOR_ESCAPED=$(escape_string "${SG_PLUGIN_VERSION_MAJOR}")
SG_PLUGIN_VERSION_MINOR_ESCAPED=$(escape_string "${SG_PLUGIN_VERSION_MINOR}")
SG_PLUGIN_VERSION_PATCH_ESCAPED=$(escape_string "${SG_PLUGIN_VERSION_PATCH}")
SG_BUILD_HOST_ESCAPED=$(escape_string "${SG_BUILD_HOST}")
SG_BUILD_TIME_ESCAPED=$(escape_string "${SG_BUILD_TIME}")
PARSED_BOOK=$(echo "${BOOK}" | xq "
.sections[] |= (
if has(\"Chapter\") then
.Chapter.content |=
walk(if type == \"string\" then
. | gsub(\"{{ #sg-project-name }}\"; \"${SG_PROJECT_NAME_ESCAPED}\") |
gsub(\"{{ #sg-handbook-revision }}\"; \"${SG_HANDBOOK_REVISION_ESCAPED}\") |
gsub(\"{{ #sg-handbook-revision-url }}\"; \"${SG_HANDBOOK_REVISION_URL_ESCAPED}\") |
gsub(\"{{ #sg-handbook-pdf-url }}\"; \"${SG_HANDBOOK_PDF_URL_ESCAPED}\") |
gsub(\"{{ #sg-git-branch }}\"; \"${SG_GIT_BRANCH_ESCAPED}\") |
gsub(\"{{ #sg-git-tag }}\"; \"${SG_GIT_TAG_ESCAPED}\") |
gsub(\"{{ #sg-git-commit }}\"; \"${SG_GIT_COMMIT_ESCAPED}\") |
gsub(\"{{ #sg-git-commit-nums-since-tag }}\"; \"${SG_GIT_COMMIT_NUMS_SINCE_TAG_ESCAPED}\") |
gsub(\"{{ #sg-git-tree-state }}\"; \"${SG_GIT_TREE_STATE_ESCAPED}\") |
gsub(\"{{ #sg-git-is-shallow-clone }}\"; \"${SG_GIT_IS_SHALLOW_CLONE_ESCAPED}\") |
gsub(\"{{ #sg-git-latest-remote-tag }}\"; \"${SG_GIT_LATEST_REMOTE_TAG_ESCAPED}\") |
gsub(\"{{ #sg-git-version }}\"; \"${SG_GIT_VERSION_ESCAPED}\") |
gsub(\"{{ #sg-git-version-major }}\"; \"${SG_GIT_VERSION_MAJOR_ESCAPED}\") |
gsub(\"{{ #sg-git-version-minor }}\"; \"${SG_GIT_VERSION_MINOR_ESCAPED}\") |
gsub(\"{{ #sg-git-version-patch }}\"; \"${SG_GIT_VERSION_PATCH_ESCAPED}\") |
gsub(\"{{ #sg-plugin-version }}\"; \"${SG_PLUGIN_VERSION_ESCAPED}\") |
gsub(\"{{ #sg-plugin-version-major }}\"; \"${SG_PLUGIN_VERSION_MAJOR_ESCAPED}\") |
gsub(\"{{ #sg-plugin-version-minor }}\"; \"${SG_PLUGIN_VERSION_MINOR_ESCAPED}\") |
gsub(\"{{ #sg-plugin-version-patch }}\"; \"${SG_PLUGIN_VERSION_PATCH_ESCAPED}\") |
gsub(\"{{ #sg-build-host }}\"; \"${SG_BUILD_HOST_ESCAPED}\") |
gsub(\"{{ #sg-build-time }}\"; \"${SG_BUILD_TIME_ESCAPED}\")
else
.
end)
else
.
end
)")
# For debugging purpose only!
#echo "CONTEXT: ${CONTEXT}" >&2
#echo "BOOK: ${BOOK}" >&2
#echo "PARSED_BOOK: ${PARSED_BOOK}" >&2
echo "${PARSED_BOOK}" | xq '.'
+109
View File
@@ -0,0 +1,109 @@
#
# author: Mamadou Babaei <mamadou@senseglove.com>
#
# (The MIT License)
#
# Copyright (c) 2020 - 2024 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.
#
[book]
authors = ["Mamadou Babaei"]
description = "Welcome to the SenseGlove Unreal Engine documentation!"
language = "en"
multilingual = false
src = "src"
text-direction = "ltr"
title = "The SenseGlove Unreal Engine Handbook"
[build]
build-dir = "book"
create-missing = false
extra-watch-dirs = ["assets"]
use-default-preprocessors = true
[preprocessor.index]
[preprocessor.links]
[preprocessor.alerts]
[preprocessor.senseglove]
after = [ "index", "links" ]
command = "sh ./bin/sg-preprocessor.sh"
[output.html]
additional-css = ["styles/custom.css"]
additional-js = []
cname = "unreal.docs.senseglove.com"
copy-fonts = true
default-theme = "navy"
git-repository-url = "https://dev.azure.com/SenseGlove/_git/SenseGlove-Unreal"
git-repository-icon = "fa-git"
input-404 = "404.md"
mathjax-support = false
no-section-label = false
preferred-dark-theme = "navy"
smart-punctuation = false
theme = ""
[output.html.fold]
enable = false
level = 0
[output.html.print]
enable = true
page-break = true
[output.html.search]
boost-hierarchy = 1
boost-paragraph = 1
boost-title = 2
copy-js = true
enable = true
expand = true
heading-split-level = 3
limit-results = 128
teaser-word-count = 64
use-boolean-and = true
[output.pdf]
trying-times = 1
timeout = 300
# https://chromedevtools.github.io/devtools-protocol/tot/Page/#method-printToPDF
landscape = false
display-header-footer = true
print-background = false
scale = 1.0
paper-width = 8
paper-height = 10
margin-top = 0.5
margin-bottom = 0.5
margin-left = 0.5
margin-right = 0.5
page-ranges = ""
ignore-invalid-page-ranges = false
header-template = "<h3 style='font-size:8px; margin-left: 48%' class='title'></h3>"
footer-template = "<p style='font-size:10px; margin-left: 48%'><span class='pageNumber'></span> / <span class='totalPages'></span></p>"
prefer-css-page-size = true
[output.pdf-outline]
optional = true
like-wkhtmltopdf = true
+6
View File
@@ -0,0 +1,6 @@
# Reset all rules from parent .gitignore files!
!*/
!**/*
# Recursively ignore all __pycache__ folders!
__pycache__/
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

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